使用大括号初始化 std::vector 使用初始值设定项列表
Initializing std::vector with curly braces uses initializer list
当我用大括号替换内部括号时,我得到不同的结果。为什么?
C++11
之后它们不是等效的吗?(除了防止整数降级( 为什么它会改变结构:
与std::vector(size_type count, const T& value = T(), const Allocator& alloc = Allocator());
相比
到std::vector(std::initializer_list<T> init, const Allocator& alloc = Allocator());
例
auto th_buckets = std::vector<std::vector<int>>{2, std::vector<int>(5, 0)};
0 00 0 0
0 00 0 0
auto th_buckets = std::vector<std::vector<int>>{2, std::vector<int>{5, 0}};
5 0
5 0
不,它们不一样,如果一个类有一个构造函数采用 std::initializer_list,即使另一个构造函数适合初始化列表,也会优先调用。 std::vector 确实有一个,所以第二个示例创建一个包含 [5,0] 的列表,而第二个示例包含一个列表 [0,0,0,0,0]。
人们普遍认为他们搞砸了这部分,对不起!
相关文章:
- std::vector 没有重载函数的实例与参数列表匹配
- 使用大括号初始化 std::vector 使用初始值设定项列表
- 替代在python中制作邻接列表与图形问题的字典?(如 C++ 中的 vector<vector<int&g
- 我可以列表初始化 std::vector 并完美转发元素吗?
- 如何在构造函数初始值设定项列表中使用 n 个元素初始化 std::vector<std::time_t>
- 从 std::vector<double> 到 Python 列表的转换失败(提升 python)
- 我可以从实例列表中初始化 std::vector<T*> 吗?
- 尝试使用初始值设定项列表构造"std::vector"的问题
- 错误 C2440:"正在初始化":无法从"初始值设定项列表"转换为"std::vector<char *,std::分配器<_Ty>>
- std::仅移动类型列表:不能在 VC++ 中放入 std::vector
- 消除 std::vector<std::string 的列表初始化的歧义>
- 如何修复邻接列表中的"Debug Assertion Failed" "vector subscript out of range"
- 如何在没有参数列表的情况下定义向量无效使用模板名称 std::vector
- 打印逗号与std :: vector分开的列表
- 具有多个数组的类的构造函数启动器列表(C++11 是可以的,boost 和 std::vector 不是)
- std::vector for_each error C3867函数调用缺少参数列表
- 初始化类'中的std::vector;s初始值设定项列表
- 从 boost::mpl:vector 类型列表中定义成员变量
- 返回 vector<pair<int,int>> & from c++ 方法到 python 使用 swig typemap 的元组列表
- 使用Templates从参数列表创建std::vector