C++ - 返回对 vector 元素的引用

标签 c++ reference return stdvector

我想返回对作为参数获取的 vector 中单个元素的引用,然后比较那里的内存地址。我的代码的一个简化示例如下所示:

const int &test(std::vector<int> i) {
    return i.at(3);
}

TEST(test, all_test) {
    const std::vector<int> i = {1,2,3,4,5};
    const int &j = test(i);
    ASSERT_THAT(&j, Eq(&i.at(3)));
}

使用它我收到以下错误消息:

Failure
Value of: &j
Expected: is equal to 0x55da7899d4dc
  Actual: 0x55da7899d4fc (of type int const*)

如何返回对单个 vector 元素的引用?

最佳答案

您按值传递 vector ,因此返回对临时元素的引用。如果您通过引用传递 vector ,您应该没问题。

关于C++ - 返回对 vector 元素的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50554982/

相关文章:

c++ - glGetUniformLocation 在 nvidia 卡上返回 -1

c++ - 每当成员变量可以由可变参数构造时,有条件地启用构造函数

c++ - 为什么我的重载 << 不返回任何数据?

c++存储通过引用返回的私有(private)变量的正确方法

SQL Server 性能结果集与输出参数与返回值

java - 返回数组列表并在不同的类中使用

c++ - Rcpp/RcppArmadillo C++/R 平衡性能

mysql - 为人员创建唯一引用,但按帐户分组

c# - 如何在 C# 中通过 ref 传递它?

检查一个数组并返回一个 boolean 值