![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Liner |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 28.1.2005 Репутация: нет Всего: нет |
Здравствуйте!
Есть такая задача. Есть строка вида "*f*f*f*f...", где: f - например, "-1234.567" * - набор символов не являющихся '-', '.', цифрой. Нужно вернуть массив чисел. Сейчас double *getDoubles(char *source, int &numcount) работает в лоб: узнает, сколько подстрок-чисел, где они начинаются, где кончаются, и эти "числа" уже atoi-тятся в элементы возвращаемого функцией массива. А как-то красивее и, наверно, быстрее это сделать можно, может через sscanf как-нибудь? Спасибо. |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
А если так попробовать
p.s. На быстроту не проверял. p.p.s На красоту тем более. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Liner |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 28.1.2005 Репутация: нет Всего: нет |
Спасибо!
Но т.к. мне нельзя терять source, я изменил вашу ф-ю так:
Почитал немного о sscanf, придумал такой вариант:
Но ваш, без моих добавлений, работает за 60 сек. миллион вызовов, а мой - за 80 сек. А со strdup, без free, работает также за 80 секунд, но, естесственно, идут resource leak'и. Мне время очень важно, можно ли как-то по-другому не убивать source? Или у меня чего-нибудь можно оптимизировать? Спасибо. |
||||
|
|||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
А в чём проблема?
(Мои комментары с SZ)
|
|||
|
||||
| Liner |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 28.1.2005 Репутация: нет Всего: нет |
Понял, спасибо
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |