Форум программистов, компьютерный форум CyberForum.ru

Move Semantic - будет ли утечка? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Из массива вещественных чисел удалить все отрицательные элементы http://www.cyberforum.ru/cpp-beginners/thread1131773.html
Помогите пожалуйста , очень срочно и если можно то попроще , что бы мог разобраться и прокомментировать Из массива вещественных чисел удалить все отрицательные элементы. Найти среднее арифметическое элементов массива до и после удаления. Создать функции для удаления элемента массива и для определения среднего значения.
C++ Определить номер минимального простого числа до и после упорядочивания массива(исправить ошибки в коде) Упорядочить массив целых положительных чисел по возрастанию, определить номер минимального простого числа до и после упорядочивания массива. Создать функции для сортировки массива и определения простого числа. !функции работают исправно, основная программа не всегда выдает верные ответы , помогите доработать , пожалуйста #include <iostream> #include <time.h> #include<stdlib.h>... http://www.cyberforum.ru/cpp-beginners/thread1131752.html
C++ Найти площадь многоугольника, заданного перечислением координат вершин в порядке обхода его границы
Найти площадь многоугольника, заданного перечислением координат вершин в порядке обхода его границы.(используя указатели)
C++ В заданном множестве точек плоскости найти количество точек, находящихся внутри кольца
В заданном множестве точек плоскости найти количество точек, находящихся внутри кольца, ограниченного окружностями с общим центром, радиусы которых r и R (r<R) Добавлено через 6 минут с помощью указателей
C++ Запуск VS с заданным INCLUDE http://www.cyberforum.ru/cpp-beginners/thread1131736.html
Нужно запустить VisualStudio c заданными переменными окружения MY_LIB MY_INCLUDE, значение которых определяется параметрами командной строки. Как это сделать - представления не имею :(
C++ Найдите треугольник максимальной площади.(через указатели) Исправьте ошибку. N треугольников плоскости заданы длинами своих сторон. Найдите треугольник максимальной площади.(через указатели) #include <iostream> #include <math.h> using namespace std; int main() { setlocale(0,""); int a,b,c,n,d,p=0; float s=0,z; подробнее

Показать сообщение отдельно
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
28.03.2014, 12:00  [ТС]     Move Semantic - будет ли утечка?
Цитата Сообщение от DiffEreD Посмотреть сообщение
Или тут что то другое надо?
Надо только избежать ненужного копирования

В таком случае можно предоставить одну функцию с universal reference в качестве параметра, например, в моем случае так:
C++
1
2
3
4
5
6
7
8
9
10
class ChannelsScaleDraw
   {
   public:
       template <typename T> updateLabelsBuffer(T&& labels)
             {
                    l = std::move(labels);
             }
   private:
       std::vector<QString> l;
   };
И теперь если мы передадим rvalue либо lvalue в updateLabelsBuf(), то в любом случае лишнего копирования не будет?

Добавлено через 3 минуты
а насчет этого
Цитата Сообщение от DrOffset Посмотреть сообщение
Move assignment operator. Replaces the contents with those of other using move semantics (i.e. the data in other is moved from other into this container). other is in a valid but unspecified state afterwards. If std::allocator_traits<allocator_type>:: propagate_on_container_move_assignment() is true, the target allocator is replaced by a copy of the source allocator. If it is false and the source and the taget allocators do not compare equal, the target cannot take ownership of the source memory and must move-assign each element individually, allocating additional memory using its own allocator as needed.
Я так понял если аллокаторы двух контейнеров будут совместимыми, что определяется на этапе компиляции, то аллокаторы перемещаемого и получающего контейнеров обменяются? Написано, что аллокатор будет 'replaced' но как тогда уничтожится тот контейнер, в который перемещают (l в данном случае) другой контейнер (labels в данном случае)?
 
Текущее время: 22:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru