重新分配向量是否会导致父向量的重新分配?

时间:2015-08-31 11:10:57

标签: c++ vector

观看以下代码段。在所有平台上的所有情况下,输出总是错误的吗?

  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;

1 个答案:

答案 0 :(得分:5)

只允许vector上的某些操作导致重新分配。对vector元素的操作永远不会这样做。

元素本身是vector的事实不会改变这一点。