观看以下代码段。在所有平台上的所有情况下,输出总是错误的吗?
std::vector<std::vector<int>> array(5);
array[0].resize(1);
std::vector<int>* arr_start = array.data();
int* p_start = array[0].data();
while( p_start == array[0].data())
{
array[0].push_back(0);
}
std::cout << "Does a reallocation in a vector leads to a reallocation in the parent vector? "
<< array.data() != arr_start;
答案 0 :(得分:5)
只允许vector
上的某些操作导致重新分配。对vector
元素的操作永远不会这样做。
元素本身是vector
的事实不会改变这一点。