如何在构造函数中初始化向量大小? 如何在C++中用C++ 11初始化一个向量到构造函数中的某个特定大小?类似这样的向量称为my_vec: #ifndef MAP_H #define MAP_H #include <vector> struct color { int r; int g; int b; }; class map { private: int gridSize; int verticalNum; int horizontalNum; std::vector< std::vector<color> > my_vec(100, vector<color>(100)); public: map(); ~map(); }; #endif // MAP_H
这不起作用,所以我试了一下:如何在构造函数中初始化向量大小? 如何在C++中用C++ 11初始化一个向量到构造函数中的某个特定大小?类似这样的向量称为my_vec: #ifndef MAP_H #define MAP_H #include <vector> struct color { int r; int g; int b; }; class map { private: int gridSize; int verticalNum; int horizontalNum; std::vector< std::vector<color> > my_vec(100, vector<color>(100)); public: map(); ~map(); }; #endif // MAP_H,c++,c++11,vector,C++,C++11,Vector,这不起作用,所以我试了一下: #ifndef MAP_H #define MAP_H #include <vector> struct color { int r; int g; int b; }; class map { private: int gridSize; int verticalNum; int horizontalNum; std::vector< std::v
#ifndef MAP_H
#define MAP_H
#include <vector>
struct color
{
int r;
int g;
int b;
};
class map
{
private:
int gridSize;
int verticalNum;
int horizontalNum;
std::vector< std::vector<color> > *my_vec;
public:
map();
~map();
};
#endif // MAP_H
在构造函数中,我尝试初始化它,如下所示:
map::map()
{
this->my_vec(100, std::vector<color>(100));
}
但我得到一个错误:表达式不能用作函数您必须在构造函数的初始值设定项列表中执行此操作:
map::map() : my_vec(100, std::vector<color>(100))
{
}
但您也可以将其初始化为类内变量,如下所示:
class MyMap {
// ...
std::vector< std::vector<color> > my_vec =
std::vector<std::vector<color>>(100, std::vector<color>(100));
public:
MyMap() {}
~MyMap() {}
};
您必须在构造函数的初始值设定项列表中执行此操作:
map::map() : my_vec(100, std::vector<color>(100))
{
}
但您也可以将其初始化为类内变量,如下所示:
class MyMap {
// ...
std::vector< std::vector<color> > my_vec =
std::vector<std::vector<color>>(100, std::vector<color>(100));
public:
MyMap() {}
~MyMap() {}
};
您需要使用构造函数初始值设定项列表
您需要使用构造函数初始值设定项列表
正如您刚才指定的C++11,类内初始化可能正是您想要的:
private:
std::vector<std::vector<color>> my_vec = std::vector<std::vector<color>>(100, std::vector<color>(100));
正如您刚才指定的C++11,类内初始化可能正是您想要的:
private:
std::vector<std::vector<color>> my_vec = std::vector<std::vector<color>>(100, std::vector<color>(100));
如果已经知道大小,为什么不使用数组?如果已经知道大小,为什么不使用数组?不需要。可以使用大括号而不是圆括号。或者T=Targs语法。您不需要这样做。可以使用大括号而不是圆括号。或T T=Targs语法。您可以但不必。@juanchopanza是的,我可以,更正thanx作为提醒。您可以,但不必。@juanchopanza是的,我可以,更正thanx作为提醒。请注意,不必指定C++11来获得C++11答案。相反,对于不允许使用C++11的情况,可以指定一个限制,例如,仅使用C++03。请注意,不必指定C++11来获得C++11答案。相反,对于不允许使用C++11的情况,可以指定一个限制,例如只允许使用C++03