gpt4 book ai didi

c++ - 在构造函数的初始化列表上初始化数组或 vector

转载 作者:太空狗 更新时间:2023-10-29 19:41:52 27 4
gpt4 key购买 nike

如何在 C++ 中使用构造函数的初始化列表来初始化(字符串)数组或 vector ?

请考虑这个例子,我想用给构造函数的参数初始化一个字符串数组:

#include <string>
#include <vector>

class Myclass{
private:
std::string commands[2];
// std::vector<std::string> commands(2); respectively

public:
MyClass( std::string command1, std::string command2) : commands( ??? )
{/* */}
}

int main(){
MyClass myclass("foo", "bar");
return 0;
}

除此之外,建议在创建对象时保存两个字符串的两种类型(数组还是 vector )中的哪一种,为什么?

最佳答案

对于 C++11,您可以这样做:

class MyClass{
private:
std::string commands[2];
//std::vector<std::string> commands;

public:
MyClass( std::string command1, std::string command2)
: commands{command1,command2}
{/* */}
};

对于 C++11 之前的编译器,您需要在构造函数的主体中初始化数组或 vector :

class MyClass{
private:
std::string commands[2];

public:
MyClass( std::string command1, std::string command2)
{
commands[0] = command1;
commands[1] = command2;
}
};

class MyClass{
private:
std::vector<std::string> commands;

public:
MyClass( std::string command1, std::string command2)
{
commands.reserve(2);
commands.push_back(command1);
commands.push_back(command2);
}
};

关于c++ - 在构造函数的初始化列表上初始化数组或 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19567348/

27 4 0
文章推荐: c++ - std::vector 成员 C++ 的总和
文章推荐: c# - AOP 性能开销