在函数中传递时,如何更新矢量
How can I make my vector update when passed in a function?
当我有这段代码时:
int push666 (vector<int> vect){
vect.push_back(666);
}
int main()
{
vector<int> a;
a.reserve(1);
push666(a);
cout << a[0];
return 0;
}
cout只会打印出一些垃圾值。函数似乎对向量没有持久的影响。我该怎么办?
通过引用而不是通过值传递向量。
int push666 (vector<int>& vect){
// ^^^
vect.push_back(666);
}
C++支持传递值和引用。
在您的代码中,std::vector<int>
通过值传递给函数-它被复制,这个副本被修改并std::vector<int>::push_back
编辑。
为了防止复制1,因此函数直接在a
上运行,您需要通过引用传递它:
int push666 (vector<int>& vect){
vect.push_back(666);
}
另一种方式,C方式(或糟糕的C++方式)是传递指针:
int push666 (vector<int>* vect){
vect->push_back(666);
}
请注意,指针是通过此处的值传递的。
1标准没有规定,但引用可能是用指针实现的,因此从技术上讲,会进行一些复制。
您应该通过引用传递它:
int push666 (vector<int>& vect){
vect.push_back(666);
}
或者不太常见的指针:
int push666 (vector<int>* vect){
vect->push_back(666);
}
push666(&a); // use & to take address of a
这两种方法都允许您修改传递给函数
相关文章:
- 从C++本机插件更新Vector3数组
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- cmake更新缓存的变量
- 更新到莫哈韦后出现cmath错误
- OpenMP:并行更新数组总是需要减少数组吗
- 为什么我的变量没有更新,我的 LED 没有亮起?
- 指针没有更新它在void函数内部指向的值
- 如何在c++中获取要更新的值
- 已修改的LinkedList未在文本文件本身中更新
- Qt:当QListView获得新条目时,如何更新QStringList
- 更新的矢量元素不打印
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 如何在ECS框架中更新组件数据和通知系统
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- 如果我想在没有更新编译器的情况下使用新功能,该怎么办?
- 如何在 C++11 中查找和更新向量中的一个嵌套结构
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 在 emscripten 网页汇编正在运行期间更新进度条?
- Android 开发:将代码更新到更新的 NDK
- 在app更新时更新部分数据库