Здравствуйте, Erop, Вы писали:
PM>>А учитывая, что в стандартной библиотеке для индексов и количества элементов в контейнере используется беззнаковый size_t E>Разве это гарантируется?
У аллокаторов ::size_type — это беззнаковое целое.
У std::allocator, который является аллокатором по-умолчанию для контейнеров, size_type это size_t, но контейнеры не обязаны его использовать как свой size_type.
У контейнеров size_type — это implementation-defined беззнаковое целое.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Sni4ok, Вы писали:
S>ну и в целом всё убого- скорость O(N^2) вместо напрашивающихся O(n * log(n))
Вроде бы O(N) оба раза, если N -- cуммарная длина списков, например...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>3. Какая альтернатива-то?
Ну линк, например...
Вообще речь идёт об альтернативе чему? Главная проблема STL в том, что это библиотека не понятно для чего...
Но правда, лучше в отдельную тему завести или занекропостить, если есть что новое сказать
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Линейный обход связного списка в общем случае на порядок(и) дороже чем соответствующий обход вектора. Если в задаче не указанно что нужен именно связный список, то по-умолчанию нужно брать vector.
Одно из уродств STL в том, что в ней по умолчанию лучше брать list...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>Беззнаковые надо использовать там где нет и не может быть отрицательных индексов и смешений-перемешений. AWW>И это очень важно, и к этому следует привыкать и стремится. AWW>То есть знаковые только там где арифметика, и отрицательный офсет НУЖЕН. Везде где индексы только "size_t".
От этого сообщения исходит опыт разгребания непонятных крешей и странных поведений.
Не сразу втыришь, что индекс прохода по массиву на int, и, по стечению
некоторых обстоятельств, уходит в отрицательные значения.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>У контейнеров size_type — это implementation-defined беззнаковое целое.
А есть гарантия, что беззнаковое?
Тоесть, если я хочу свой конетейнер сделать для стандартных алгоритмов, то я тоже обязан беззнаковое использовать для инндекса, например?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>45 страниц
Это его ещё попилили на части, так там боьше было
EP>могу же сорваться и ответить там на что-нибудь
Оно вроде бы заперто, сначала надо наголосовать на отпирание.
Но можно просто новый топик созжать со ссылками и цитатами из того флейма и понесётся
'а, и то так и не разрешили...
EP>Вроде же добавили поддержку stateful allocators в C++11
Ну прикрути неракообразно...
Кстати, ещё чего вектору не хватает, так это то, что он не может спросить у аллокатора, скока тому удобно памяти дать...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Не холивара ради — приведи пару пунктов от себя.
Заведи топик, где это не офтопик -- приведу
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
EP>>У контейнеров size_type — это implementation-defined беззнаковое целое. E>А есть гарантия, что беззнаковое?
Да: "Table 96 — Container requirements ... X::size_type unsigned integer type"
E>Тоесть, если я хочу свой конетейнер сделать для стандартных алгоритмов, то я тоже обязан беззнаковое использовать для инндекса, например?
Не помню есть ли алгоритмы STL принимающие контейнер, а не итераторы. Вспоминается только boost'вский remove_erase и подобные.
А так да, если бы были — то да, формально должно быть беззнаковое.
Здравствуйте, Erop, Вы писали:
EP>>3. Какая альтернатива-то? Естественно без потери мощности в общем случае E>Ну линк, например...
Так там же мощность теряется. Практически после любой операции — получаем single pass, и излишнее копирование как следствие.
Это конечно не всегда является проблемой, но мы же обсуждаем часть стандартной библиотеки C++, а не Python'а там или C#'а.
E>Вообще речь идёт об альтернативе чему?
Здравствуйте, Erop, Вы писали:
EP>>Линейный обход связного списка в общем случае на порядок(и) дороже чем соответствующий обход вектора. Если в задаче не указанно что нужен именно связный список, то по-умолчанию нужно брать vector. E>Одно из уродств STL в том, что в ней по умолчанию лучше брать list...
Почему? В стандарте даже явно сказано обратное:
23.2.3 Sequence containers
The sequence containers offer the programmer different complexity trade-offs and should be used accordingly. vector or array is the type of sequence container that should be used by default. list or forward_list should be used when there are frequent insertions and deletions from the middle of the sequence. deque is the data structure of choice when most insertions and deletions take place at the beginning or at the end of
the sequence.
EP>>std::string это не STL. E>Это уже терминологический спор, IMHO.
Да это не спор. Это просто другая тема.
Я обсуждаю STL, а конкретно библиотеку Степанова и её производные, а не стандартную библиотеку C++ целиком. Ни потоки ввода-вывода, ни строки в STL не входят.
E>Кстати, ещё чего вектору не хватает, так это то, что он не может спросить у аллокатора, скока тому удобно памяти дать...
Да, не хватает. А ещё нехватает возможности расширения in-place, а-ля realloc. Кстати, у Александреску, есть выступление, где он рассказывает про их вектор способный тесно взаимодействовать с аллокатором.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
E>>Вообще речь идёт об альтернативе чему? EP>алгоритмы + контейнеры
Это вообще не является задачей или группой задач.
Правда нужна другая тема.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, smeeld, Вы писали:
S>size_t стандартом С++ ABI x86 и sparc определены как беззнаковое.
Так не интересно.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Почему?
По разным замерам, насколько я помню...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Я обсуждаю STL, а конкретно библиотеку Степанова и её производные, а не стандартную библиотеку C++ целиком. Ни потоки ввода-вывода, ни строки в STL не входят.
Библиотека Степанова довольно сильно отличается от того даже, что в С++03 было, и уж поадвно от ныненшних красот. Вообще у Степанова был, в лучшем случае концепт некий.
но лучше отдельную тему.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском