我该如何实现以下代码的等效功能:
#include <vector>
size_t bufferSize = 1024 * 1024;
std::vector<unsigned char> buffer(bufferSize, ' ');
使用列表(花括号)初始化?
当我尝试执行以下操作:
#include <vector>
size_t bufferSize = 1024 * 1024;
std::vector<unsigned char> buffer {bufferSize, ' '};
它错误地将 bufferSize
解释为要存储在容器第一个索引中的值(即调用了错误的 std::vector
构造函数),由于从 unsigned int
(size_t
) 到 unsigned char
的非法缩小转换而无法编译。
vector{...}
从列表(包括0个元素)初始化,使用vector(...)
调用所有其他构造函数。 “通用”并不意味着“这是替代品”。它只是意味着您现在可以在所有对象上进行列表初始化,而不仅仅是其中一些。 - Mooing Duck