访问 std::vector<std::reference_wrapper 中的元素<Type>>

Accessing elements in std::vector<std::reference_wrapper<Type>>

本文关键字:gt lt std 元素 Type reference vector 访问 wrapper      更新时间:2023-10-16

我正在尝试使用reference_wrappers向量做一些工作,并遇到了一些问题。这是我得到的:

std::vector<std::reference_wrapper<Type>> vec;
//Some stuff...
for(int i = 0; i < vec.size(); i++)
{
        if(&vec[i] == &vec)
    {
        return true;
    }
}

这是行不通的。我对 std::reference_wrapper 完全陌生,所以我想我不确定如何使用它。上面的例子给了我一个"缺少转换"错误。

我还有另一个地方可以做这样的事情:

vec[i].someMethod();

这会产生:

__gnu_cxx::__alloc_traits<std::allocator<std::reference_wrapper<Type> > >::value_type’ has no member named 'someMethod()'

我正在使用GCC4.8

一些简单的例子

int i = 10;
std::vector<std::reference_wrapper<int>> v;
v.push_back( std::ref( i ) );
std::cout << v[0] << std::endl;
std::cout << v[0].get() << std::endl;

在您的情况下,结构将看起来像

vec[i].get().someMethod();

附言我没有看你更新的帖子。