Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.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++ 如何在类中初始化向量? Suduko类 { 私人: 矢量板; 公众: Suduko():板(9,向量(9,“.”){} }_C++_Vector - Fatal编程技术网

C++ 如何在类中初始化向量? Suduko类 { 私人: 矢量板; 公众: Suduko():板(9,向量(9,“.”){} }

C++ 如何在类中初始化向量? Suduko类 { 私人: 矢量板; 公众: Suduko():板(9,向量(9,“.”){} },c++,vector,C++,Vector,这是唯一的办法吗 我试着在用vectorboard(9,vector(9,“.”)定义板的地方初始化它但这不起作用 我还尝试: class Suduko { private: vector<vector<string>> board; public: Suduko() : board(9, vector<string>(9, ".")) {} } Suduko() { 板(9,向量(9,“.”); } 及 Suduko() { 板=板(9,

这是唯一的办法吗

我试着在用
vectorboard(9,vector(9,“.”)定义板的地方初始化它但这不起作用

我还尝试:

class Suduko
{
private:
    vector<vector<string>> board;
public:
    Suduko() : board(9, vector<string>(9, ".")) {}
}
Suduko()
{
板(9,向量(9,“.”);
}

Suduko()
{
板=板(9,向量(9,“.”);
}

在构造器内部,这些也不起作用。那么,我是否仅限于按照我在第一个示例中所做的方式初始化向量(哪种方式有效)?或者我还有别的办法吗?

要让您的其他尝试奏效,您必须使用:

Suduko()
{
   board = board(9, vector<string>(9, "."));
}

下面列出了一些初始化向量的方法

board.resize(9);
for (auto& v : board)
{
    v.resize(9, ".");
}
Suduko类
{
私人:
std::vector板{9,std::vector(9,“.”};
//.....
};
Suduko级
{
私人:
标准::矢量板=
标准::向量(9,标准::向量(9,“.”);
//.....
};
Suduko级
{
私人:
矢量板;
公众:
Suduko():板(9,std::vector(9,“.”)
{
}
};
Suduko级
{
私人:
矢量板;
公众:
Suduko():板{9,std::vector(9,“.”)
{
}
};
Suduko级
{
私人:
矢量板;
公众:
Suduko()
{
分配(9,标准::向量(9,“.”);
}
};

向量
并不特殊。查找如何初始化任何数据成员,您将得到答案。向量用于需要动态调整数组大小的情况。你认为你的数独领域在运行时会增长到多大?另外,不同的行是否可以单独增长?说真的,这是一个需要一个简单的9x9数组的例子。@UlrichEckhardt这是一个2D向量的练习,我知道2D数组在这里更合适。你有一个一直有效的方法,你不喜欢吗?为什么?我喜欢第二种方法,谢谢分享。第一个被视为不好的练习吗?@gdagger第二个可能更快,因为它不会创建临时向量,我不确定。@NeilKirk速度的好处很小,除非你每秒创建10000000个数独。可读性在这里更为重要。更少的代码=更容易理解正在发生的事情。@在这种情况下,这并不重要,但如果将该技术推广到其他项目中,则可能会发生。@NeilKirk编译器、处理器和操作系统在幕后做了大量工作,因此在没有实际基准测试的情况下,不可能谈论速度(除了明显的情况)你的解决方案可能会更快,但证明它的唯一方法是做一个实验(在一个循环中创建10000000个sudikus)。
board = vector<vector<string>>(9, vector<string>(9, "."));
board.resize(9);
for (auto& v : board)
{
    v.resize(9, ".");
}
class Suduko
{
private:
    std::vector<std::vector<std::string>> board { 9, std::vector<std::string>( 9, "." ) };
    //.....
};

class Suduko
{
private:
    std::vector<std::vector<std::string>> board = 
        std::vector<std::vector<std::string>>( 9, std::vector<std::string>( 9, "." ) );
    //.....
};

class Suduko
{
private:
    std::vector<std::vector<std::string>> board;
public:
    Suduko() : board( 9, std::vector<std::string> (9, "." ) ) 
    {
    }
};

class Suduko
{
private:
    std::vector<std::vector<std::string>> board;
public:
    Suduko() : board{ 9, std::vector<std::string> (9, "." ) } 
    {
    }
};

class Suduko
{
private:
    std::vector<std::vector<std::string>> board;
public:
    Suduko()
    {
        board.assign( 9, std::vector<std::string> (9, "." ) ); 
    }
};