Size: a a a

2020 July 15

ip

illya palkin in supapro.cxx
std::vector<int> v1 {1, 3, 5, 7, 9};
   std::cout << &v1[2] << '\n';

   v1.erase(v1.begin() + 1, v1.begin() + 2);
   std::cout << &v1[2] << '\n';

А почему тогда адресса не меняются здесь в &v1[2]
источник

ip

illya palkin in supapro.cxx
Я думал будет выделен новый кусок памяти где будет уже новый вектор без этого удаленного элемента
источник

AS

Anatoly Shirokov in supapro.cxx
Dimmu Borgir
тема для меня новая) сорян)
что такое this? лучше объяснить на примере трансляции С++ в C:

// C++
struct foo {
  int d;
  void boo(int a);
};
на заре С++ Страуструп транслировал это в С в своем CFront:
struct foo {
  int d;
};

void boo(struct foo* this, int a) {
}

так вот, this - неявный параметр метода, который содержит указатель на объект, в контексте которого он вызывается
источник

LA

Liber Azerate in supapro.cxx
illya palkin
Я думал будет выделен новый кусок памяти где будет уже новый вектор без этого удаленного элемента
То есть мало сдвинуть, надо ещё реаллоцировать?
источник

ip

illya palkin in supapro.cxx
Liber Azerate
То есть мало сдвинуть, надо ещё реаллоцировать?
Я просто хочу понять что такое "сдвиг"
источник

ip

illya palkin in supapro.cxx
что-то типа std::copy() на место (итератор) на 1 позицию меньше ?
источник

VD

Vlad Doc in supapro.cxx
illya palkin
std::vector<int> v1 {1, 3, 5, 7, 9};
   std::cout << &v1[2] << '\n';

   v1.erase(v1.begin() + 1, v1.begin() + 2);
   std::cout << &v1[2] << '\n';

А почему тогда адресса не меняются здесь в &v1[2]
А должны?
источник

ip

illya palkin in supapro.cxx
правой части вектора
источник

VS

Vlad Serebrennikov in supapro.cxx
illya palkin
std::vector<int> v1 {1, 3, 5, 7, 9};
   std::cout << &v1[2] << '\n';

   v1.erase(v1.begin() + 1, v1.begin() + 2);
   std::cout << &v1[2] << '\n';

А почему тогда адресса не меняются здесь в &v1[2]
с чего бы ему меняться
но по этому адресу теперь другой элемент
источник

VD

Vlad Doc in supapro.cxx
У тебя же смещение от начала массива
источник

VS

Vlad Serebrennikov in supapro.cxx
illya palkin
что-то типа std::copy() на место (итератор) на 1 позицию меньше ?
что-то вроде
источник

LA

Liber Azerate in supapro.cxx
Vlad Doc
У тебя же смещение от начала массива
Он не понимает, что такое "сместить"
источник

VS

Vlad Serebrennikov in supapro.cxx
там обычно используется перемещение
источник

VD

Vlad Doc in supapro.cxx
v1[2] == *(&v1[0] + 2)
источник

ip

illya palkin in supapro.cxx
Vlad Serebrennikov
там обычно используется перемещение
а есть какой-нибудь std::move на range [iter, iter)?
источник

ip

illya palkin in supapro.cxx
или в форе поэлементно мувается
источник

VS

Vlad Serebrennikov in supapro.cxx
illya palkin
Я думал будет выделен новый кусок памяти где будет уже новый вектор без этого удаленного элемента
реаллоцировать надо, когда в текущей аллокации место закончилось

если элементы удалять, то этого никогда не произойдет, очевидно
источник

ip

illya palkin in supapro.cxx
Vlad Serebrennikov
реаллоцировать надо, когда в текущей аллокации место закончилось

если элементы удалять, то этого никогда не произойдет, очевидно
Да все, я уже понял
источник

AK

Anton Kviatkovskii in supapro.cxx
illya palkin
а есть какой-нибудь std::move на range [iter, iter)?
std::move
источник

VS

Vlad Serebrennikov in supapro.cxx
illya palkin
а есть какой-нибудь std::move на range [iter, iter)?
источник