gpt4 book ai didi

c++ - 如何使用初始化列表来初始化 2D vector 成员?

转载 作者:太空狗 更新时间:2023-10-29 21:00:25 28 4
gpt4 key购买 nike

我有代码:

#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) {}

如何让它正常工作?

最佳答案

首先,只需使用 vector 的初始化列表来初始化 2D vector 。然后只需按值而不是按引用获取它(据我所知,初始化列表通常按值传递,非常量引用将不起作用):

Foo(std::initializer_list<std::vector<int> > data) : data(data) {}

关于c++ - 如何使用初始化列表来初始化 2D vector 成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22133909/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com