访问std :: vector <std :: reference_wrapper <type>&gt; </std :: reference_wrapper <type>中的元素

时间:2014-01-09 01:59:47

标签: c++ c++11

我正在尝试使用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

1 个答案:

答案 0 :(得分:3)

一些简单的例子

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();

P.S。我没看过你的最新帖子。