![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Алексей1153 |
![]()
Сообщение
#31
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
panter_dsd |
![]()
Сообщение
#32
|
![]() Жаждущий знаний ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: ![]() ![]() ![]() |
Готово. Сделал для любого кол-ва элементов. Хотелось бы еще для любого типа.
Хотелось бы мнение узнать о правильности кода, а то stl только недавно начал учить. |
|
|
Алексей1153 |
![]()
Сообщение
#33
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
1)
Цитата if (n >= v.size ()) "size()" имеет тип unsigned int , а "n" у тебя - int 2) Передавать и возвращать контейнеры лучше по ссылке (а то нехилое по объёму копирование будет иногда происходить) Поэтому, лучше не возвращать из функции тип std::list<T> , а объявить переменную вне функции, а потом передать ссылку для заполнения контейнера в функции 3)объявление переменных-контейнеров частенько громоздкие - лучше определить синоним typedef std::list<T> td_LIST; это также поможет вносить быстрые исправления, если что. Но в данном примере это не сильно существенно - код небольшой 4) проверяй v.size()!=0 для любых контейнеров перед получением итератора или ссылки (.begin(),end(),[x] и так далее) 5) нет нужды делать вот так (и вообще нельзя) .... eEnd = v.end (); eIt != eEnd...... надо .... ; eIt != v.end()...... Цитата list_out.insert (v.begin (), v.begin () + n);//<< не получится так вставить из вектора в список. Надо - либо одинаковый тип делать, либо цикл Раскрывающийся текст
Сообщение отредактировал Алексей1153 - 24.8.2010, 20:07 |
|
|
panter_dsd |
![]()
Сообщение
#34
|
![]() Жаждущий знаний ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: ![]() ![]() ![]() |
1. Учту.
2. Согласен. 4. Учту. 5. Не согласен. Можно и нужно, если контейнер не изменяется. Зачем дергать функцию на каждой итерации? 6. Вполне получается. Что смущает? |
|
|
Алексей1153 |
![]()
Сообщение
#35
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
5 - в релизе там не будет функции
![]() 6 - ну, раз получается, тогда пользуйся на здоровье. У меня компилятор брыкается )) Ну оно и понятно |
|
|
panter_dsd |
![]()
Сообщение
#36
|
![]() Жаждущий знаний ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: ![]() ![]() ![]() |
6. Компилятор ничего не говорит. По документации тоже можно, вроде бы. Завтра перепроверю.
|
|
|
Алексей1153 |
![]()
Сообщение
#37
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
всё, 6 - мой косяк )) Исправил . Пропустил начальный итератор и не обратил внимание
Сообщение отредактировал Алексей1153 - 24.8.2010, 20:08 |
|
|
kwisp |
![]()
Сообщение
#38
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
4) проверяй v.size()!=0 для любых контейнеров перед получением итератора или ссылки (.begin(),end(),[x] и так далее) мои пять копеек. я вот тоже в stl недавно стал вникаить. так меерс советует в 4 совете использовать empty() вместо сравнения size() с нулем из-за постоянного времени выполнения функции. stl |
|
|
Алексей1153 |
![]()
Сообщение
#39
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
kwisp, ок, учтём ) Только обычно у меня такой вызов был не в цикле, а list ещё не доводилось пользоваться почему то ))
|
|
|
panter_dsd |
![]()
Сообщение
#40
|
![]() Жаждущий знаний ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: ![]() ![]() ![]() |
Алексей1153, что-то не компилируется твой код.
|
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.2.2025, 20:06 |