Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ломбард - вывод табличных данных Помогите сделать таблицу. Плыз) #include <iostream> #include <fstream> #include <string.h> #include <windows.h> #include <iomanip> using namespace std; const int SZ=1; https://www.cyberforum.ru/ cpp-beginners/ thread850210.html C++ По поводу ссылок и конструктора копирования
Никак не пойму. При создании объекта и передачи конструктору в качестве параметра объекта другого класса, отладчик показывает что на строчке Data(Element) выполняется конструктор копирования класса T. Разве не должна вместо этого теперь переменная Data "указывать" на туже область памяти что и ссылка Element. Я всегда думал что при присвоении объекту ссылки на другой объект никаких...
C++ Двухмерный массив: Написать программу, указывающую для каждого вопроса проценты ответов «Да», «Нет», «не знаю» https://www.cyberforum.ru/ cpp-beginners/ thread850183.html
В двухмерном массиве размером n x m хранятся результаты опроса n человек на m вопросов. Ответами на вопросы являются слова «Да», «Нет», «не знаю». Написать программу, указывающую для каждого вопроса проценты ответов «Да», «Нет», «не знаю»
C++ Работа с графикой Здравствуйте, помогите разобраться с программой? в результате должны получиться различные графические объекты, перемещающиеся по прямым траекториям с разными случайными векторами скоростей. и возможность добавления и удаления объектов. вот все, что есть. программа не работает. #include <stdlib.h> #include <time.h> #include <grx20.h> #include <grxkeys.h> struct TPoint{ int x,y; int vx,... https://www.cyberforum.ru/ cpp-beginners/ thread850178.html
C++ Сформировать массив по правилу
программа формирования и вывода массива размером 6 на 3, каждые три последовательных элемента в строке которого составлены по следующему правилу: 1-й - равен удвоенному числу, введенному с клавиатуры; 2-й - равен квадрату суммы индексов предыдущего элемента; 3-й - равен остатку от деления индекса текущего элемента на 2
C++ Нужна проверка кода (система обмена сообщениями) https://www.cyberforum.ru/ cpp-beginners/ thread850155.html
есть код C++,компилируется в Mingw/bin при помощи g++. Данный код представляет собой систему обмена сообщениями. Идеальный случай,когда юзер не допускает ошибок при вводе регистрационных данных. проблема в написании проверки ввода этих самых данных #include "iostream" #include "locale.h" #include <string> #include <stdio.h> #include <stdlib.h> using namespace std;
C++ Описать структуру с именем NOTE Помогите с программой пожалуйста. А. Описать структуру с именем NOTE, содержащую следущие поля: Фамилия, имя; Номер телефона; День рождения(массив из трех чисел). Ввести с клавиатуры данные о 10 абонентах, записи упорядочить по трем первым цыфрам номера телефона; Б. Написать программу, выполняющую следующие действия: Вывод на экран информации о человеке, чья фамилия введенна с клавиатуры;... https://www.cyberforum.ru/ cpp-beginners/ thread850152.html Заполнение массива числами C++
Здравствуйте, есть набор чисел (3, 3.5, 4 ,4.5, 5) требуется заполнить массив который заполняется случаными образом этими числами. как это сделать?
C++ Определитель матрицы - нужен полноценный пример Ребята, нужен код на C++, поиск определителя матрицы n-го порядка, ну скажем что самое простое( помоему по методу гаусса ). Здесь уже видел несколько кусочков, но нужен полный код, если кому не тяжело. Ну скажем в Microsoft Visual C++ чтобы скомпилировалась. https://www.cyberforum.ru/ cpp-beginners/ thread850138.html C++ Сортировка вставками двухсвязного списка По заданию требуется отсортировать список по возрастанию. Организовал структуру списка,функцию по добавлению и удалению элементов, но застрял на сортировке,пытался сделать по соответствующему алгоритму для массивов,вот что получилось: struct List_t { int mInfo; // значение,хранящееся в данном узле List_t* mpNext; //указатель на следующий узел списка List_t* mpPrev; //указатель на... https://www.cyberforum.ru/ cpp-beginners/ thread850132.html
C++ Подпрограмма для обнаружения корней квадратного тричлена
Доброго дня, нужно написать подпрограмму для обнаружения корней квадратного тричлена. #include <math.h> #include <iostream.h> void koef(double a, double c); void D(double a,double b,double c); int main(void) { double a,b,c; cout<<"Wwedit koeficienty truczlena\n"; cout<<"\na=";
C++ Поиск первой гласной в массиве char и возврат ее номера https://www.cyberforum.ru/ cpp-beginners/ thread850123.html
Подскажите, пожалуйста, реализацию на с++ следующей задачи: найти первую по счету гласную в массиве типа char и записать ее номер в переменную.
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
0

std::move, rvalue reference - C++ - Ответ 4479838

27.04.2013, 18:57. Показов 2243. Ответов 6
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Недавно начал разбираться с новыми способами передачи аргументов. Прочитал около 10 статей, некоторые на русском, некоторые на английском. Но осталось несколько вопросов...
Помогите разобраться.
Допустим есть класс:
C++
1
2
3
4
5
6
class Foo
{
public:
    Foo( vector<string> v): vec( v ) {}
    vector<string> vec;
};
В главной функции я создаю вектор строк и заполняю его данными для того что бы передать его в конструктор (и больше вектор мне не нужен).
C++
1
2
3
4
5
6
7
8
9
int main()
{
    vector<string> s;
    s.push_back("string 1");
    s.push_back("string 2");
    Foo f( move(s) );
    cout << boolalpha << s.empty(); //вывод true - вектор пустой, значит данные переместились
    return 0;
}
Ставиться вопрос: сколько копирований вектора происходит во время выполнения
C++
1
Foo f( move(s) );
Одно копирование? move(s) переместил содержимое в параметр конструктора v, а после из v содержимое скопировалось в член класса vec.

И еще взгляните на почти аналогичный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Foo
{
public:
    Foo( vector<string> v): vec( move(v) ) {} //сюда я добавил move
    vector<string> vec;
};
 
int main()
{
    vector<string> s;
    s.push_back("string 1");
    s.push_back("string 2");
    Foo f( s );
    cout << boolalpha << s.empty(); //на выводе false, то есть было два копирования (из s в v и из v в vec)
    return 0;
}
И такой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <utility>
#include <vector>
 
using namespace std;
 
class Foo
{
public:
    Foo( vector<string> v): vec( move(v) ) {} //добавил move
    vector<string> vec;
};
 
int main()
{
    vector<string> s;
    s.push_back("string 1");
    s.push_back("string 2");
    Foo f( move(s) ); //добавил move
    cout << boolalpha << s.empty(); //на выводе true
    return 0;
}
То есть, в последнем варианте не было копирования вообще?
Компилятор MinGW 4.7.3

Вернуться к обсуждению:
std::move, rvalue reference C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2013, 18:57
Готовые ответы и решения:

C++ expressions - rvalue, glvalue, prvalue, xvalue, lvalue, а также rvalue reference: что есть что?
Доброго времени суток, не понимаю до конца деление С++ - выражений (приложение 1). Lvalue вроде...

[C++11] move\rvalue ref semantic
Перегрузил оператор присвоения используя move\rvalue ref semantic. /** * Copy operator ...

RVALUE Ссылка, error: cannot bind non-const lvalue reference of type 'String&' to an rvalue of type 'String'|
Код не компилируется ниже 17 стандарта с++ с ошибкой error: cannot bind non-const lvalue reference...

Rvalue reference
Добрый вечер! Помогите пожалуйста разобраться с rvalue reference: template &lt;class T&gt; void...

6
27.04.2013, 18:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2013, 18:57
Помогаю со студенческими работами здесь

Rvalue reference
#include &lt;iostream&gt; std::string get_string() { return std::string(&quot;12345&quot;); } int main()...

Rvalue reference and lambda
void foo(A&amp;&amp; a) { auto l = () {}; //a? } Как передать в лямбду rvalue ref как просто...

Возвращаемый тип как rvalue reference
Нашел интересный пример в книге Мейерса Эффективный и современный С++. class Widget { ...

Rvalue reference. Что происходит в коде?
В консоли пусто. Но &quot;worked&quot; выводит. Почему? #include &lt;iostream&gt; using std::cout; class...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru