Вопросы по теме 'move-semantics'
Почему нет присваивания / конструктора перемещения по умолчанию?
Я простой программист. Переменные-члены моего класса чаще всего состоят из POD-типов и STL-контейнеров. Из-за этого мне редко приходится писать операторы присваивания или конструкторы копирования, поскольку они реализованы по умолчанию.
Добавьте...
42391 просмотров
schedule
15.06.2024
Делаем своп быстрее, проще в использовании и безопасным для исключений
Я не мог спать прошлой ночью и начал думать о std::swap . Вот знакомая версия C++98:
template <typename T>
void swap(T& a, T& b)
{
T c(a);
a = b;
b = c;
}
Если определяемый пользователем класс Foo использует...
2421 просмотров
schedule
17.04.2024
Как компилятор узнает, что нужно перемещать локальные переменные?
Мне любопытно, как именно работает эта функция. Рассмотрим что-то вроде
std::unique_ptr<int> f() { std::unique_ptr<int> lval(nullptr); return lval; }
Этот код прекрасно компилируется даже для типа, предназначенного только для...
1397 просмотров
schedule
09.02.2024
Конструктор перемещения С++ 11 не вызывается, предпочтителен конструктор по умолчанию
Предположим, у нас есть этот класс:
class X {
public:
explicit X (char* c) { cout<<"ctor"<<endl; init(c); };
X (X& lv) { cout<<"copy"<<endl; init(lv.c_); };
X (X&& rv) {...
7286 просмотров
schedule
30.12.2023
Перемещение семантики и передачи по Rvalue-ссылке в перегруженной арифметике
Я кодирую небольшую библиотеку числового анализа на C ++. Я пытался реализовать с использованием последних функций C ++ 11, включая семантику перемещения. Я понимаю обсуждение и главный ответ в следующем сообщении: С ++ 11 rvalues и семантика...
2215 просмотров
schedule
16.10.2022
Переместить семантику и скопировать конструктор
Я написал программу, как показано ниже:
#include <iostream>
using namespace std;
class A {
public:
A() {
}
A(A &a) {
id = a.id;
cout << "copy constructor" << endl;
}
A& operator=(A...
238 просмотров
schedule
09.12.2023
Скотт Мейерс о Rvalueness
Я посмотрел чрезвычайно информативное видео Скотта Мейерса о Универсальные ссылки , из которых я узнал большую часть своих знаний о ссылках Rvalue, перемещении и пересылке. В какой-то момент он говорил о значении , а не о типе переменной, и...
1221 просмотров
schedule
01.11.2023
Освобождение памяти с помощью std::move()?
Говорит, что у меня есть класс со стандартным контейнером:
class Library{
std::vector<Book> books;
public:
void putOnFire(){
books.clear();
}
};
Обычный способ очистки контейнера — «очистить», однако большая часть...
182 просмотров
schedule
05.05.2024
признак типа c++, чтобы сказать тривиально подвижный - примеры
Я бы определил "тривиально подвижный" как
Вызов конструктора перемещения (или оператора присваивания перемещения) эквивалентен memcpy байтов в новое место назначения без вызова деструктора для перемещенного объекта.
Например, если вы...
1144 просмотров
schedule
17.04.2024
Добавление/удаление элементов из вектора при повторении указанного вектора
У меня есть вектор v , который я хочу повторить, выполняя функцию для каждого элемента, который
изменяет элемент (можно сделать с помощью map() )
после этого, возможно, удаляет текущий элемент, в зависимости от того, что было результатом...
508 просмотров
schedule
11.04.2024
Неоднозначность присваивания копирования в C++ при назначении перемещения
В C++11 мы получаем ошибку неоднозначности от компилятора (g++), если делаем следующие определения:
C& operator=(C rhs)
{
swap(*this, rhs);
return *this;
}
C& operator=(C&& rhs)
{
swap(*this, rhs);
return *this;
}...
255 просмотров
schedule
12.10.2022
Замена std::function изнутри себя (перемещением присваивания *this?)
Можно ли заменить один std::function внутри себя другим std::function ?
Следующий код не компилируется:
#include <iostream>
#include <functional>
int main()
{
std::function<void()> func = []()
{
std::cout...
139 просмотров
schedule
11.08.2022
Почему я не могу вызвать назначение перемещения из ctor перемещения?
Иногда это выглядит как экономия времени, если я могу вызвать операцию назначения перемещения из механизма перемещения. Но когда я пытаюсь, это приводит меня прямо к обычному назначению:
#include <iostream>
using namespace std;
class...
29 просмотров
schedule
16.07.2022
Передача rvalue в ссылку const ведет себя странно при переходе по более длинному маршруту
У меня есть код, в котором один класс (класс B) хранит другой класс (класс A) по ссылке const lvalue. Я сделал это, чтобы избежать копирования экземпляра класса A, если я правильно понял, то даже при инициализации с помощью rvalue ссылка const может...
21 просмотров
schedule
17.02.2024