Я гарантированно, что указатели на элементы std :: vector действительны после перемещения вектора?
Учитывая этот пример:
std::vector<int> v1 = { 1, 2, 3 };
const int* i = &v1[1];
std::vector<int> v2(std::move(v1));
std::cout << *i << std::endl;
Хотя во многих реализациях STL это, вероятно, сработает, я гарантирую, что согласно стандарту никакие перераспределения не выполняются, когдаstd::vector
перемещается, а внутренний буфер поддерживаетсяv2
то же самое, что раньше было одним изv1
? Я не смог найти эту информацию ни в интернете, ни в самом стандарте.