-4

假设我有一堂课,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 gsdf ghsdf g sdfg ersg s

先感谢您。

4

2 回答 2

1

对于矢量:

some_a_pointer->y.resize(0);

仅使用迭代器 ( ) 是无法做到的y.begin()

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

于 2013-07-14T02:23:15.383 回答
1

std::vector有一个称为clear清除所有元素的方法。

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

C++11 有一个类调用std::array<T,N>编译时大小的静态数组,它有一个调用方法fill,可以轻松地将所有内容填充为零(la 循环)。你可以用my_array.fill(0);.

于 2013-07-14T02:27:17.547 回答