| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Качество кода: вектор векторов и т.д. |
| Автор: nerezus 13.5.2009, 01:52 | ||
Я не умею писать на C++. Это видно из качества данного кода. Кто хочет мне дать какие советы? |
| Автор: Lazin 13.5.2009, 08:28 | ||||
что-бы не возвращать вектор из ф-ии и избежать лишнего копирования, можно передавать в нее insert iterator, тип можно не указывать явно
использовать можно так:
|
| Автор: xvr 13.5.2009, 14:06 | ||
Здесь явно напрашивается класс
|
| Автор: nerezus 13.5.2009, 14:29 | ||||||||||||||
|
| Автор: azesmcar 13.5.2009, 14:34 | ||
STL-овский стиль.
да, но зачем в цикле? значение то от этого не меняется. если boost::match_results<string::const_iterator> res; стл совместимый контейнер, то цикл можно заменить на std::copy. |
| Автор: Lazin 13.5.2009, 14:35 |
гибкостью, можно передавать любой итератор, у которого value_type = std::vector< std::string > |
| Автор: xvr 13.5.2009, 19:37 | ||||
Позволит избавится от вектора векторов, довольно расточительная конструкция |
| Автор: nerezus 15.5.2009, 12:09 | ||||
А если я хочу написать что-то многомерное, есть ли приемлемый контейнер для этого? P.S. Какой контейнер может держать разнотипные данные? Или, как я понял, это зло, и надо использоватьь структуры/классы? |
| Автор: zim22 15.5.2009, 12:18 |
эти данные вообще друг с другом не связаны? тогда не знаю. если же это производные классы - то достаточно в контейнер поместить указатель на их базовый класс. |
| Автор: xvr 15.5.2009, 13:46 | ||||||
За счет увеличения количества векторов. Если во внешнем векторе будет много маленьких внутренних векторов, то такая конструкция приведет к массе алокаций маленьких кусочков памяти вместо одного большого (как будет в случае 2х векторов - вектор всех внутренних элементов и вектор индексов). Это ОЧЕНЬ неэффективно по скорости, кроме того, это может привести к фрагментации кучи. Добавлено через 44 секунды
boost::any |
| Автор: nerezus 15.5.2009, 14:29 | ||
|
| Автор: mes 15.5.2009, 14:51 |
не путайте "под него" и "под его данные". Вектор - это оболочка над динамическим массивом, и при стандартной аллокации, память под массив выделяется в куче. |
| Автор: Lazin 15.5.2009, 14:51 |
под сам вектор - да, под данные, которые он хранит - нет, это-же динамический массив |