首页 > 解决方案 > 如何默认初始化 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 ;

但我觉得必须有一个“更好”的方法?

问候,

标签: c++vectorstlinitialization

解决方案


在类的主体中初始化类成员的唯一方法是大括号或等号初始化它。这意味着你可以做到

std::vector<int> items{ std::vector<int>(100) };

或者

std::vector<int> items = std::vector<int>(100);

如果您不喜欢这些选项中的任何一个,那么您可以向类构造函数添加一个初始化程序并拥有

class Options
{
    Options() : items(100) {}
    std::vector<int> items;
} options ;

但我个人会使用前两个选项。


推荐阅读