【发布时间】:2016-01-22 11:10:14
【问题描述】:
我最近在学习标准库算法,对函数fill_n(iter, n, val) 有疑问。此功能要求容器至少具有从iter 开始的n 元素。
这里是测试代码:
// Version 1, Error
vector<int> vec;
vec.reserve(10); // Only allocate space for at least 10 elements
fill_n(vec.begin(), 10, 0);
// Version 2, OK
vector<int> vec;
vec.resize(10); // Value initialized 10 elements
fill_n(vec.begin(), 10, 0);
// Version 3, OK
vector<int> vec;
fill_n(back_inserter(vec), 10, 0); // Push back 10 elements via back_inserter
为什么版本 1 代码错误,而版本 2 和 3 没有?
【问题讨论】:
标签: c++ c++11 vector stl-algorithm