概述
c++11新增的函数,向指定容器范围填充一连串增值序列。用它通过指定一个起始值,并根据区间的长度递增生成后续的值。它有助于快速生成递增的序列。
本质上就是按序访问迭代器,同时value++的写法。
- 头文件
#include<numeric>
C++标准程序库的算法需要导入头文件
一些数值类算法函数需要导入
- 函数原型
template <class ForwardIt, class T>
void iota(ForwardIt first, ForwardIt last, T value);
first
和 last
是迭代器,表示要填充的区间的起始位置和结束位置。
value
是起始值,该值将根据区间的长度逐步增加。
无返回值。
示例代码
整数:
int main() {
std::vector<int> nums(5);
std::iota(nums.begin(), nums.end(), 1);
for (const auto& num : nums) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
输出
1 2 3 4 5
在这个示例中,我们创建了一个长度为5的整数向量nums,并使用iota算法填充了向量的元素。起始值为1,根据向量的长度递增生成后续的值。
字符:
main() {
std::list<char> chars(4);
std::iota(chars.begin(), chars.end(), 'A');
for (const auto& ch : chars) {
std::cout << ch << " ";
}
std::cout << std::endl;
return 0;
}
输出
A B C D
在这个示例中,我们创建了一个长度为4的字符型列表chars,并使用iota算法填充了列表的元素。起始值为’A’,根据列表的长度递增生成后续的值。
浮点数:
int main() {
std::array<float, 6> values;
std::iota(values.begin(), values.end(), 1.5);
for (const auto& val : values) {
std::cout << val << " ";
}
std::cout << std::endl;
return 0;
}
输出
1.5 2.5 3.5 4.5 5.5 6.5
在这个示例中,我们创建了一个大小为6的浮点型数组values,并使用iota算法填充了数组的元素。起始值为1.5,根据数组的大小递增生成后续的值。