有关如何安全通过,并在C使用矢量++一个简单的问题。
我知道,使用矢量时,你必须非常小心的地址给他们,他们的元素,因为当你动态地改变它们的大小,他们可能会改变他们的地址(除非你使用的储备等等,但我想象我怎么会不知道多少空间我需要)。
现在我想现有的矢量(别处创建)传递给相适应,并改变其大小等功能,但我,什么是安全的,因为我通常会用指针实现这一切有点不清楚。 在此之上有使用的矢量参考,这只是muddies水给我。
例如采取以下两种功能和意见在其中
void function1(std::vector<int>* vec){
std::cout<<"the size of the vector is: "<<vec->size()<<std::endl; //presumably valid here
for (int i=0;i<10;i++){
(*vec).pushback(i); //Is this safe? Or will this fail?
// Or: vec->pushback(i); Any difference?
}
std::cout<<"the size of the vector is: "<<vec->size()<<std::endl; //Is this line valid here??
}
和
void function2(std::vector<int>& vec){
std::cout<<"the size of the vector is: "<<vec.size()<<std::endl; //presumably valid here
for (int i=0;i<10;i++){
vec.pushback(i); //Is this safe? Or will this fail?
}
std::cout<<"the size of the vector is: "<<vec.size()<<std::endl; //Is this line valid here??
}
有两个功能之间,无论是在功能方面和在安全性方面有什么区别?
或者换句话说,如果我只有一个指针/引用的矢量和需要调整它我怎么能肯定这个矢量实际上是在内存中,或什么的指针向量真的是,以后我就可以操作。 谢谢。