如何设置reference_wrapper的STL容器的初始大小?

时间:2014-09-19 16:26:34

标签: c++ c++11 stl reference-wrapper

我在vector中包含了一些reference_wrapper引用类型。由于我需要按顺序填充此容器,因此我尝试设置容器的初始大小:

vector<std::reference_wrapper<T>> v(5);

v[3] = ..
v[2] = ..
v[4] = ..
v[5] = ..
v[1] = ..

无法使用如下错误进行编译:

error: no matching function for call to ‘std::reference_wrapper<int>::reference_wrapper()’

是否有解决方法可以完成此工作,或者我是否必须使用vector<T*>来实现此目的?

2 个答案:

答案 0 :(得分:5)

你可以提供一个原型,一种你自己的&#34;未初始化的&#34;值:

T blank;
std::vector<std::reference_wrapper<T>> v(5, ref(blank));

答案 1 :(得分:0)

您可以使用std :: vector :: reserve方法。

std::vector< std::reference_wrapper<T> > v;
v.reserve(5);
v.push_back( std::ref( t0 ) ); 
v.push_back( std::ref( t1 ) ); // and etc.. where  t0, t1 - some variable type of T.

Coliru example