Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在构造函数中初始化向量大小? 如何在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 - Fatal编程技术网

如何在构造函数中初始化向量大小? 如何在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