如何分配指定大小的std::initializer_list并循环添加元素?
关于std::initializer_list的使用误区
std::initializer_list不支持动态添加元素,它的设计定位是作为初始化其他容器/对象的临时列表载体,本身是只读、大小固定的轻量视图,无法在后续修改或扩展元素数量。
如果你需要先分配初始大小、后续再动态添加元素,应该使用std::vector<float>这类支持动态扩容的容器,示例代码如下:
std::size_t size = 5; // 替换为你的实际size值 std::vector<float> tmp(size); // 初始化包含size个float元素,默认值为0.0 // 后续循环中添加元素 for (int i = 0; i < 3; ++i) { tmp.push_back(static_cast<float>(i)); }
补充说明std::initializer_list的核心特性:
- 构造时大小就已固定,没有提供
push_back、insert等修改元素数量的成员函数 - 内部元素是只读的(元素类型为
const float),无法修改现有元素,更无法新增 - 它的典型用法是传递初始化列表,比如
std::vector<float> v = {1.2f, 3.4f, 5.6f};,而非作为动态存储容器使用
内容的提问来源于stack exchange,提问作者awwd
相关产品推荐
相关产品推荐

