![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 3 Всего: 43 |
Я не умею писать на C++. Это видно из качества данного кода. Кто хочет мне дать какие советы? |
|||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
что-бы не возвращать вектор из ф-ии и избежать лишнего копирования, можно передавать в нее insert iterator, тип можно не указывать явно
использовать можно так:
|
||||
|
|||||
azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
nerezus
1.vector< vector<string> > - не мешало бы тайпдефнуть это безобразие ![]() 2. возвращать vector по ссылке, или как сказал Lazin 3.
почему бы не инициализировать start и end сразу там где они нужны?
а вообще зачем нужны эти переменные?
этот цикл наверняка можно заменить на алгоритм std::copy (я просто точно не знаю что там буст возвращает) Добавлено через 6 минут и 6 секунд
зачем это нужно в цикле? |
||||||||
|
|||||||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Здесь явно напрашивается класс
![]() |
|||
|
||||
nerezus |
|
||||||||||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 3 Всего: 43 |
|
||||||||||||||
|
|||||||||||||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
гибкостью, можно передавать любой итератор, у которого value_type = std::vector< std::string > |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Позволит избавится от вектора векторов, довольно расточительная конструкция ![]() |
||||
|
|||||
nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 3 Всего: 43 |
А если я хочу написать что-то многомерное, есть ли приемлемый контейнер для этого? P.S. Какой контейнер может держать разнотипные данные? Или, как я понял, это зло, и надо использоватьь структуры/классы? |
||||
|
|||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
эти данные вообще друг с другом не связаны? тогда не знаю. если же это производные классы - то достаточно в контейнер поместить указатель на их базовый класс. |
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
За счет увеличения количества векторов. Если во внешнем векторе будет много маленьких внутренних векторов, то такая конструкция приведет к массе алокаций маленьких кусочков памяти вместо одного большого (как будет в случае 2х векторов - вектор всех внутренних элементов и вектор индексов). Это ОЧЕНЬ неэффективно по скорости, кроме того, это может привести к фрагментации кучи. Добавлено через 44 секунды
boost::any |
||||||
|
|||||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 3 Всего: 43 |
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не путайте "под него" и "под его данные". Вектор - это оболочка над динамическим массивом, и при стандартной аллокации, память под массив выделяется в куче. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
под сам вектор - да, под данные, которые он хранит - нет, это-же динамический массив |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |