Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как поменять местами элементы vector?  (Прочитано 10995 раз)
0 Пользователей и 1 Гость смотрят эту тему.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« : 11-12-2004 12:44 » 

Имеется контейнер vector для какого-то класса.
Требуется поменять местами элемент номер i с элементом номер j.
Операция = для элементов не перегружена.
Вопрос: как?
Если делать с перегрузкой операции для элементов - то понятно. А если без?
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Ronin
Гость
« Ответ #1 : 11-12-2004 17:31 » 

с помощью итераторов + если надо, конструктор копий. Или я не понял задания?
Записан
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #2 : 12-12-2004 02:11 » 

baldr, хехехе что-то вы батенька здеся мудрите... ты как эти объекты в вектор запихивал... push_back или insert .... так вот эти функции вызывают оператор = (чуешь чем пахнет!!), эсли при этом тебя все устраивает, то тебя однозначно должно устроить и это:

допустим для T;
std::vector<T> vect;

T t;
vect.push_back(t);
vect.push_back(t);
vect.push_back(t);
....

и далее...

T buffer = vect;
vect = vect[j];
vect[j] = buffer;

и ни каких проблем  Ага
Записан

С уважением Lapulya
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #3 : 12-12-2004 07:17 » new

lapulya, да, что-то я стормозил...
Вот сейчас посмотрел как я вчера это сделал - операцию все ж перегрузил и зачем-то использовал итератор, а про операцию обращения по индексу совсем забыл. Позор.  :oops:
Хотя, работает.  Отлично
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Serega
Гость
« Ответ #4 : 12-12-2004 08:49 » 

Нагляднее использовать алгоритмы
Код:
swap)v[i(, v[j(:;
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines