如何在c ++中清空/清除向量和数组

时间:2013-07-14 02:20:06

标签: c++ arrays pointers vector iterator

让我们说我有一个班级,A

Class A {
  int x[100];
  vector<int> y;
  Fill(x);
  Fill(y.begin());
  B(x);
  B(y.begin());
}
Class Fill (pointer) {
  *pointer = 0;
  ++pointer;
  *pointer = 1;
  ++pointer 
}
Class B(container) {
  //how do I clear/empty the array and the vector passed by class A given only the pointers to them?
  //I must clear an array and a vector in THIS class.
  //I DO NOT want to fill them with 0s. 
  //x and y.begin are POINTERS to the first element of the container, not containers    
}

dsfsdakfgnsdfgsf DG SDF 陆上自卫队 ghsdf G sdfg ersg 小号

提前谢谢。

2 个答案:

答案 0 :(得分:1)

对于vector:

some_a_pointer->y.resize(0);

只能使用迭代器(y.begin())来完成它。

数组的大小永远不会改变,所以你能做的最好就是用0填充它。

答案 1 :(得分:1)

std::vector有一个名为clear的方法,可以清除所有元素。

所以my_vector.clear();将清除一切。但是你不能真正对数组做同样的事情。这是不可能的。充其量你可以用零填充它们或者走错路并动态分配数组然后删除它。我宁愿不处理内存问题,所以我只是用零填充它们。

C ++ 11有一个名为std::array<T,N>的类,用于编译时大小的静态数组,它有一个名为fill的方法,可以将所有内容简化为零(循环播放)。您可以使用my_array.fill(0);调用它。