我在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*>
来实现此目的?
答案 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.