c++ - 如何默认初始化 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 ;
但我觉得必须有一个“更好”的方法?
问候,
解决方案
在类的主体中初始化类成员的唯一方法是大括号或等号初始化它。这意味着你可以做到
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 ;
但我个人会使用前两个选项。
推荐阅读
- python - 为什么切片 [:3] 中不包含第一个数字?
- python - 如何使用 xlrd 读取 excels 的“学生姓名”列数据?
- excel - VBA Excel自动调整工作表上的多个形状的大小和边框
- sql-server - 使用 FOR XML [SQL] 更改 Xml 的格式
- python - 在删除不可打印的字符时无法打印右大括号到文件 python
- java - Thread.currentThread().getContextClassLoader().getResourceAsStream(); 返回空
- ansible - 未能将主机名变量传递给角色
- php - 为什么在 laravel eloquent 中使用 load() 时 $this 为空?
- vue.js - 如何在 VueJS 中合并 2 个第三方组件
- asp.net-mvc-4 - ASP.Net MVC 控制器构造函数显示错误 System.Web.Mvc.Controller.Session.get 返回 null