如何在 C++ 中分配二维初始化列表?
How to assign two dimensional initializer list in c++?
我从 vector 继承了我的 class,我希望能够将列表分配给我的 class 喜欢的 vector。
我的代码如下:
#include <vector>
using namespace std;
template<typename T>
class Matrix
: public vector<vector<T>>
{
public:
Matrix( vector<vector<T>> && m )
: vector<vector<T>>( m )
{}
// Tried this approach, but it doesn't work
// Matrix(std::initializer_list<std::initializer_list<T>> l){
// }
}
int main()
{
Matrix<int> m({{0, 1}, {2, 3}}); // it works
// Matrix<int> m = {{0, 1}, {2, 3}}; // error: no instance of constructor "Matrix<T>::Matrix [with T=int]" matches the argument list -- argument types are: ({...}, {...})
}
只需将 std::vector
构造函数引入您的 class 范围:
template <typename T> class Matrix : public vector<vector<T>> {
public:
using vector<vector<T>>::vector;
};
https://godbolt.org/z/b3bdx53d8
Offtopic:继承对你的情况来说不是一个好的解决方案。
我从 vector 继承了我的 class,我希望能够将列表分配给我的 class 喜欢的 vector。
我的代码如下:
#include <vector>
using namespace std;
template<typename T>
class Matrix
: public vector<vector<T>>
{
public:
Matrix( vector<vector<T>> && m )
: vector<vector<T>>( m )
{}
// Tried this approach, but it doesn't work
// Matrix(std::initializer_list<std::initializer_list<T>> l){
// }
}
int main()
{
Matrix<int> m({{0, 1}, {2, 3}}); // it works
// Matrix<int> m = {{0, 1}, {2, 3}}; // error: no instance of constructor "Matrix<T>::Matrix [with T=int]" matches the argument list -- argument types are: ({...}, {...})
}
只需将 std::vector
构造函数引入您的 class 范围:
template <typename T> class Matrix : public vector<vector<T>> {
public:
using vector<vector<T>>::vector;
};
https://godbolt.org/z/b3bdx53d8
Offtopic:继承对你的情况来说不是一个好的解决方案。