如何默认初始化一个 std::vector
How to default initilise a std::vector
正在尝试默认初始化 std::vector
#include <iostream>
#include <vector>
int main()
{
class Options
{
std::vector<int> items{100};
} options ;
std::cout << "Size:" << options.items.size() << " Items[0]:" << options.items[0] << '\n';
return 0;
}
这将打印:
尺寸 1:项目[0]:100
但这不是我想要的,我希望向量的大小为 100。
我设法做到了
class Options
{
std::vector<int> items{ std::vector<int>(100) };
} options ;
但我觉得一定有一个 "better" 方法?
此致,
在 class 的主体中初始化 class 成员的唯一方法是用大括号或等于初始化它。这意味着你可以做到
std::vector<int> items{ std::vector<int>(100) };
或
std::vector<int> items = std::vector<int>(100);
如果您不喜欢这些选项中的任何一个,那么您可以向 classes 构造函数添加一个初始值设定项,并让
class Options
{
Options() : items(100) {}
std::vector<int> items;
} options ;
但我个人会改用前两个选项。
class Options
{
std::vector<int> items;
public:
Options() : items(100) {}
}
:
开始成员的列表初始化,在构造函数主体开始之前,按照成员在 class 中声明的顺序构造成员。
为了避免因
之间的不同行为而造成的任何混淆
std::vector<int> items(100);
和
std::vector<int> items{100};
使用
std::vector<int> items;
items.resize(100); //Default initializes 100 int <=> zero
// or
items.resize(100, 17); //Initializes 100 ints with value 17
在构造函数中使用
class Options
{
std::vector<int> items;
public:
Options()
{
items.resize(100);
}
} options;
按如下方式更改您的代码:
std::vector<int> items(100,0);
这将创建大小为 100 的向量并使用值 0 初始化所有向量
正在尝试默认初始化 std::vector
#include <iostream>
#include <vector>
int main()
{
class Options
{
std::vector<int> items{100};
} options ;
std::cout << "Size:" << options.items.size() << " Items[0]:" << options.items[0] << '\n';
return 0;
}
这将打印:
尺寸 1:项目[0]:100
但这不是我想要的,我希望向量的大小为 100。
我设法做到了
class Options
{
std::vector<int> items{ std::vector<int>(100) };
} options ;
但我觉得一定有一个 "better" 方法?
此致,
在 class 的主体中初始化 class 成员的唯一方法是用大括号或等于初始化它。这意味着你可以做到
std::vector<int> items{ std::vector<int>(100) };
或
std::vector<int> items = std::vector<int>(100);
如果您不喜欢这些选项中的任何一个,那么您可以向 classes 构造函数添加一个初始值设定项,并让
class Options
{
Options() : items(100) {}
std::vector<int> items;
} options ;
但我个人会改用前两个选项。
class Options
{
std::vector<int> items;
public:
Options() : items(100) {}
}
:
开始成员的列表初始化,在构造函数主体开始之前,按照成员在 class 中声明的顺序构造成员。
为了避免因
之间的不同行为而造成的任何混淆std::vector<int> items(100);
和
std::vector<int> items{100};
使用
std::vector<int> items;
items.resize(100); //Default initializes 100 int <=> zero
// or
items.resize(100, 17); //Initializes 100 ints with value 17
在构造函数中使用
class Options
{
std::vector<int> items;
public:
Options()
{
items.resize(100);
}
} options;
按如下方式更改您的代码:
std::vector<int> items(100,0);
这将创建大小为 100 的向量并使用值 0 初始化所有向量