Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
mat_for_c
165 / 160 / 34
Регистрация: 26.04.2013
Сообщений: 729
Завершенные тесты: 3
#1

Можно ли значение вектора A передать вектору B через swap? - C++

11.11.2013, 19:26. Просмотров 528. Ответов 17
Метки нет (Все метки)

А возможно ли такое сделать через swap:
значение вектора A передать вектору B, при этом у вектора A должно остаться свое значение.

Я понимаю, что можно написать B=A, но вот вектора довольно-таки большие и присваивание долго идет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2013, 19:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли значение вектора A передать вектору B через swap? (C++):

Освободить память вектора векторов без swap - C++
Собственно будет ли "Swap-To-Fit" std::vector<std::vector<double>> m_coefficients; . . . ...

Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае - C++
Условие задачи: переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае. Исходные...

Можно ли применить find_if к вектору - C++
Можно ли применить find_if к вектору? Нужно найти среди компонент вектора первое число, которое больше задаваемой величины (в векторе...

Обращение к вектору полученному через указатель - C++
Всем привет, Появился вопрос по поводу обращения к вектору полученному через указатель. Выглядит так: Передаю адрес вектора в...

Можно ли передать в функцию две переменных через 1 какую-нибудь конструкцию? - C++
Можно ли передать в функцию две переменных через 1 конструкцию чтобы вместо этого int a=5; int b=10; Func (a,b); ...

Передать значение из одного класса в другой через указатель - C++
Я не могу додуматься что тут не так class Car { private: int weight; public: Car(int w) { weight=w; }

17
Angeline
36 / 30 / 2
Регистрация: 21.10.2013
Сообщений: 197
11.11.2013, 19:29 #2
mat_for_c, ну свапом будет еще дольше ведь.
0
mat_for_c
165 / 160 / 34
Регистрация: 26.04.2013
Сообщений: 729
Завершенные тесты: 3
11.11.2013, 20:17  [ТС] #3
Почему??? Обменять значения векторов через метод swap самого контейнера есть константа!
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
11.11.2013, 20:34 #4
Цитата Сообщение от mat_for_c Посмотреть сообщение
Я понимаю, что можно написать B=A, но вот вектора довольно-таки большие и присваивание долго идет.
А ты хочешь, что бы они ссылались на одни и те же данные? С вектром так не пойдёт.
1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.11.2013, 21:00 #5
Цитата Сообщение от gray_fox Посмотреть сообщение
С вектром так не пойдёт.
Зато пойдет с каким-нибудь QVector, с implicit sharing на борту.
mat_for_c, предлагаю ознакомиться с концепциями: подсчет ссылок (аля shared_ptr) и copy-on-write.
0
mat_for_c
165 / 160 / 34
Регистрация: 26.04.2013
Сообщений: 729
Завершенные тесты: 3
11.11.2013, 21:13  [ТС] #6
Цитата Сообщение от Tulosba Посмотреть сообщение
QVector
то бишь он в Qt. Tulosba, где-то слышал, что если дело касается скорости выполнения, то Qt лучше не использовать... или наврали?
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.11.2013, 21:21 #7
mat_for_c, скорее всего наврали. Но надо проверять конкретный код.
1
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
12.11.2013, 08:03 #8
Цитата Сообщение от mat_for_c Посмотреть сообщение
где-то слышал, что если дело касается скорости выполнения, то Qt лучше не использовать... или наврали?
Там полиморфные коллекции (в отличие от STL), так что могут быть (скорее всего, я думаю) медленнее. Но насколько, 25%? 50%? Это критично?
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.11.2013, 08:22 #9
Цитата Сообщение от gray_fox Посмотреть сообщение
Там полиморфные коллекции (в отличие от STL)
Что Вы имеете в виду?
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
12.11.2013, 08:55 #10
Цитата Сообщение от Tulosba Посмотреть сообщение
Что Вы имеете в виду?
Наследование, виртуальные методы, там нет этого?
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.11.2013, 09:02 #11
Цитата Сообщение от gray_fox Посмотреть сообщение
Наследование, виртуальные методы, там нет этого?
Смотрите сами http://qt-project.org/doc/qt-5.0/qtcore/qvector.html
Шаблонный класс, как в STL.
1
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.11.2013, 09:58 #12
В новом стандарте для таких случаев есть перенос с помощью rvalue reference

Добавлено через 5 минут
C++
// википедия
template< class T > class vector
{
   vector (const vector& ) ; // Конструктор копирования (медленный)
   vector (vector&&) ; // Конструктор переноса из временного объекта (быстрый)
   vector & operator = ( const vector& ) ; // Обычное присваивание (медленное)
   vector & operator = ( vector&&) ; // Перенос временного объекта (быстрый)
} ;
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.11.2013, 11:57 #13
programina, см. тз
Цитата Сообщение от mat_for_c Посмотреть сообщение
значение вектора A передать вектору B, при этом у вектора A должно остаться свое значение.
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.11.2013, 12:41 #14
Цитата Сообщение от Tulosba Посмотреть сообщение
programina, см. тз
что не правильно?
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.11.2013, 12:43 #15
programina,
Цитата Сообщение от mat_for_c Посмотреть сообщение
у вектора A должно остаться свое значение
1
12.11.2013, 12:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 12:43
Привет! Вот еще темы с ответами:

Проверка индексов при доступе к вектору через [] - C++
При написании кода сталкиваюсь с дилеммой: использовать at или operator при работе с std::vector или подобными вещами. Для релиза то явно...

Чем можно заменить функцию swap? - C++
Чем можно заменить функцию swap? Она на моем компиляторе не работает. Библиотеку iostream включал.

Как удалить часть элементов вектора или как присвоить вектору часть другого вектора? - MathCAD
В общем сабж. Как записать в маткаде следующее? К примеру есть вектор А со 100 элементами. Как удалить у этого вектора 0-19 элементы и...

Можно ли через value передать несколько аргументов? - JavaScript
Доброго всем времени суток) Меня интересует возможно ли через атрибут value передать сразу несколько аргументов для функции JavaScrip???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.