让我们说我有一个班级,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 小号
提前谢谢。
答案 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);
调用它。