如何在c++中通过引用传递矢量元素
How to pass vector elements by reference in c++?
我有一个向量,我需要将其元素传递给以下类型的函数:
bool doIt(MyClass &a);
所以我需要稍后做:
vector<MyClass> v;
doIt(v[2]);
我不确定我做得对不对。。。
我不确定我做得对不对。。。
是,你做得对,除了在你的示例代码中向量v
不包含任何元素,所以索引2越界了,这个表达式:
v[2]
导致未定义的行为。这将足以修复它(如果MyClass
是默认可构建的):
vector<MyClass> v(3);
// ^
// Creates a vector of 3 default-constructed
// elements of type MyClass
doIt(v[2]);
让我们检查一下文档!
http://www.cplusplus.com/reference/vector/vector/operator[]/
reference operator[] (size_type n);
const_reference operator[] (size_type n) const;
返回对向量容器中位置n处元素的引用。
看起来你很好。
doIt(v[2]);
如果2
是有效索引(这意味着它小于v.size()
),那么这是绝对正确的。它通过引用传递参数。
v[2]
存在),因为std::vector
的operator []
返回一个引用。
这是正确的,运算符[]通过引用返回,doIt函数通过引用获取,所以请记住,您可以修改向量中的元素。
您的代码没有任何问题(如果v.size()为>=3),但当您调整向量大小时,您的引用可能会无效。
相关文章:
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- 设计将引用元素移动到开头的数据结构.C++
- 为什么通过 vector<reference_wrapper> 的元素删除引用的值<T>不会使向量无效?
- 将新元素添加到列表中,并返回对该元素的引用?
- 如何告诉自动推断向量<bool>元素的非引用类型
- 通过引用访问矢量元素是否会降低C++的空间复杂性?
- 通过引用传递时访问std::vector的元素
- 如何取消引用和打印指针数组的每个元素?
- 如何从模板获取常量矢量元素的引用
- 调整大小后保持对矢量元素的引用有效
- 取消引用C++中的指针元素
- 在这种情况下,如何返回对数组中元素的引用?
- C++ - 返回对矢量元素的引用
- 引用保留向量中的第一个元素
- C++ 当容器在使用前被破坏/修改时发出警告(通过引用元素或迭代器使用)
- 如何通过引用对用户定义对象的类型集 (STL) 的数组元素进行增强迭代?
- 如何理解取消引用指向数组的指针会获取指向元素的指针
- 如何将一个向量的元素引用复制到另一个向量?
- 通过[]运算符返回矢量元素引用