Size: a a a

IT KPI C/С++ ХВ (хорошо, что не UB)

2017 December 08

В(

Влад Телега (ecenin09) in IT KPI C/С++ ХВ (хорошо, что не UB)
Ты ещё спроси, есть ли кто то кто на бэйсике программирует
источник

В(

Влад Телега (ecenin09) in IT KPI C/С++ ХВ (хорошо, что не UB)
источник

VR

Vitalii Rybalko in IT KPI C/С++ ХВ (хорошо, что не UB)
Влад Телега (ecenin09)
Ты ещё спроси, есть ли кто то кто на бэйсике программирует
источник
2017 December 09

i

i mean it in IT KPI C/С++ ХВ (хорошо, что не UB)
Я - ні. Звідки фото на аві? Дуже цікаво.
источник

ɐ

ɐıɹɐw in IT KPI C/С++ ХВ (хорошо, что не UB)
Знайшла сама, дякую
@itkpi_js
источник

ɐ

ɐıɹɐw in IT KPI C/С++ ХВ (хорошо, что не UB)
рандомна картинка з мережі
источник
2017 December 10

TK

Tihran Katolikian in IT KPI C/С++ ХВ (хорошо, что не UB)
Есть вопрос насчет std::move. Кто-нибудь может обьяснить КАК именно выходит так, что перемещение работает быстрее, чем копирование? (на уровне памяти)
источник

YK

Yevhenii Kizim in IT KPI C/С++ ХВ (хорошо, что не UB)
Tihran Katolikian
Есть вопрос насчет std::move. Кто-нибудь может обьяснить КАК именно выходит так, что перемещение работает быстрее, чем копирование? (на уровне памяти)
В переносе меняется указатель с одного на другой, используется та же область памяти
источник

YK

Yevhenii Kizim in IT KPI C/С++ ХВ (хорошо, что не UB)
Для копирования выделяется точно такая же по размеру и заполняется теми же значениями
источник

TK

Tihran Katolikian in IT KPI C/С++ ХВ (хорошо, что не UB)
Yevhenii Kizim
В переносе меняется указатель с одного на другой, используется та же область памяти
А если я возвращаю значение, которое храниться в стеке? Т.е., например:
Type func() {
  Type type;
  ...
  return std::move(type);
}

Как тогда это работает?
источник

YK

Yevhenii Kizim in IT KPI C/С++ ХВ (хорошо, что не UB)
Tihran Katolikian
А если я возвращаю значение, которое храниться в стеке? Т.е., например:
Type func() {
  Type type;
  ...
  return std::move(type);
}

Как тогда это работает?
Все конструкции stl контейнера работают с динамическим выделением памяти, так что прием с указателями остается тот же
источник

TK

Tihran Katolikian in IT KPI C/С++ ХВ (хорошо, что не UB)
Yevhenii Kizim
Все конструкции stl контейнера работают с динамическим выделением памяти, так что прием с указателями остается тот же
Ага. Т.е. использовать это не с STL контейнерами нет смысла. Все, теперь понятно, спасибо)
источник

TK

Tihran Katolikian in IT KPI C/С++ ХВ (хорошо, что не UB)
Ну, или определить в каком-то другом типе-контейнере динамической памяти конструктор перемещения, насколько я понял.
источник

A

Andrew in IT KPI C/С++ ХВ (хорошо, что не UB)
Tihran Katolikian
Ага. Т.е. использовать это не с STL контейнерами нет смысла. Все, теперь понятно, спасибо)
Тут речь не только о STL контейнерах. Допустим ты написал класс, который внутри использует какой-нибудь массив - и выделяет память под этот массив в куче. При копировании нужно выделить такой же кусок памяти, скопировать туда данные. При перемещении, указатель на этот массив будет передан новому объекту, а в старом объекте - установлен в null, т.е. всего две операции присвоения вместо выделения нового массива и memcpy
источник

TK

Tihran Katolikian in IT KPI C/С++ ХВ (хорошо, что не UB)
Andrew
Тут речь не только о STL контейнерах. Допустим ты написал класс, который внутри использует какой-нибудь массив - и выделяет память под этот массив в куче. При копировании нужно выделить такой же кусок памяти, скопировать туда данные. При перемещении, указатель на этот массив будет передан новому объекту, а в старом объекте - установлен в null, т.е. всего две операции присвоения вместо выделения нового массива и memcpy
Спасибо, понял)
источник

RK

Rost K in IT KPI C/С++ ХВ (хорошо, что не UB)
Tihran Katolikian
А если я возвращаю значение, которое храниться в стеке? Т.е., например:
Type func() {
  Type type;
  ...
  return std::move(type);
}

Как тогда это работает?
В данном случае ты попросишь использовать move constructor при выходе. Но рекоммендуется при вовращении из функции  обьекта в автоматическом сторадже использовать просто return type;.
Это позволит компайлеру провести NRVO(named return value optimization) что приведет к тому, что твой возвращаемый обьект вообще не будет копироваться/муваться
источник

OS

Oleksandr Shaposhnikov in IT KPI C/С++ ХВ (хорошо, что не UB)
Yevhenii Kizim
В переносе меняется указатель с одного на другой, используется та же область памяти
Это напрямую зависит от того, как реализован конструктор перемещения.
источник

OS

Oleksandr Shaposhnikov in IT KPI C/С++ ХВ (хорошо, что не UB)
источник

A

AndreyMS in IT KPI C/С++ ХВ (хорошо, что не UB)
Ребят, нужна хелпа
источник

A

AndreyMS in IT KPI C/С++ ХВ (хорошо, что не UB)
Есть два поинтера на одну и ту же память
источник