3

我有一个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*>为此目的使用 a 吗?

4

2 回答 2

5

您可以提供一个原型,类似于您自己的“未初始化”值:

T blank;
std::vector<std::reference_wrapper<T>> v(5, ref(blank));
于 2014-09-19T16:36:24.333 回答
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.

科利鲁示例

于 2014-09-19T17:35:03.913 回答