如何在构造函数中初始化向量大小?

0 c++ vector c++11

如何使用c ++ 11将C++中的向量初始化为构造函数中的某个特定大小?像这样的东西(矢量称为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
Run Code Online (Sandbox Code Playgroud)

这不起作用,所以我尝试了这个:

#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
Run Code Online (Sandbox Code Playgroud)

在构造函数中,我尝试初始化它,如:

map::map()
{
    this->my_vec(100, std::vector<color>(100));
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误:"表达式不能用作函数"

iDi*_*ong 5

正如您刚刚指定的C++ 11,类内初始化可能正是您想要的:

private:
    std::vector<std::vector<color>> my_vec = std::vector<std::vector<color>>(100, std::vector<color>(100));
Run Code Online (Sandbox Code Playgroud)