如何使用初始值设定项列表初始化 2D 向量成员
How can I use an initializer list to initialize a 2D vector member?
我有代码:
#include <initializer_list>
#include <vector>
class Foo {
std::vector<std::vector<int> > data;
public:
Foo(std::initializer_list<std::initializer_list<int> > & data) : data(data) {}
};
int main(){
Foo f {{1,2},{3,3}};
return 0;
}
编译器抱怨:
initalizer_list_test.cpp: In constructor ‘Foo::Foo(std::initializer_list<std::initializer_list<int> >&)’:
initalizer_list_test.cpp:11:79: error: no matching function for call to ‘std::vector<std::vector<int> >::vector(std::initializer_list<std::initializer_list<int> >&)’
Foo(std::initializer_list<std::initializer_list<int> > & data) : data(data) {}
^
initalizer_list_test.cpp:11:79: note: candidates are:
In file included from /usr/include/c++/4.8.2/vector:64:0,
from initalizer_list_test.cpp:2:
/usr/include/c++/4.8.2/bits/stl_vector.h:392:9: note: template<class _InputIterator, class> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
vector(_InputIterator __first, _InputIterator __last,
^
/usr/include/c++/4.8.2/bits/stl_vector.h:392:9: note: template argument deduction/substitution failed:
initalizer_list_test.cpp:11:79: note: candidate expects 3 arguments, 1 provided
Foo(std::initializer_list<std::initializer_list<int> > & data) : data(data) {}
如何让它正常工作?
首先,只需使用矢量的初始值设定项列表即可初始化 2D 矢量。然后只需按值而不是按引用获取(据我所知,初始值设定项列表通常是按值传递的,非常量引用不起作用):
Foo(std::initializer_list<std::vector<int> > data) : data(data) {}
相关文章:
- C++类 - 初始化列表 - 递归 - 按值传递
- 在初始化列表之外手动调用基类的构造函数
- C++:带有大括号初始化列表的函数调用表达式 - 标准是否规定在单个元素列表的微不足道的情况下忽略大括号?
- std::map与谓词与初始化列表
- 类内初始化与构造函数初始化列表的顺序
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何在初始化列表中的构造函数之后初始化变量/对象?
- C++初始化列表与分配值
- C++初始化列表中的向量集大小或调整大小
- 在构造函数初始化列表中使用 std::variant
- emplace_back初始化列表错误,当初始化列表在独立变量上工作时
- 解释了构造函数成员初始化列表
- 使用初始化列表时如何获取私有数据?
- 用初始化列表和超类构造函数声明子类构造函数的正确方式
- 如何在成员初始化列表中声明共享指针
- 庞大的初始化列表,如何修复"fatal error C1060: compiler is out of heap space"
- 我可以检查初始化列表中设置的构造函数主体中的变量吗
- 使用整数初始化列表初始化长双精度的向量
- 是否可以在C++中使用初始化列表设置数组的特定成员?