关于iota函数的介绍
iota()函数用于对STL中具有前向迭代器的容器进行一定范围内的批量递增赋值,简单来说就是可以对一个容器进行值的初始化,而且其中的值是递增的,递增的初始值由第三个参数决定。
当我们需要将一个容器的值进行递增初始化的时候,我们可以使用这个函数进行初始化,而不用自己实现。
iota()函数声明实现于头文件 numeric
关于iota的实现如下:
template <class ForwardIterator, class T>
void iota (ForwardIterator first, ForwardIterator last, T val)
{
while (first!=last) {
*first = val;
++first;
++val;
}
}
关于iota()函数的使用如下,即对一个容器进行值的初始化:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main() {
vector<int> p(10, 0);
// iota: 对vector内的元素进行批量递增复制,初始值为第三个参数
iota(p.begin(), p.end(), 100);
for (auto& i : p) {
cout << i << " ";
}
return 0;
}
代码输出:
100 101 102 103 104 105 106 107 108 109
关于 itoa函数 和 _itoa函数 的介绍
iota()函数和itoa()函数很像,要注意区分。itoa()函数是用来将一个int类型转换为C字符串类型的函数。名称可以理解为 i - to - a 。而且可以根据参数的不同,将int类型转换为不同的进制,并保存在相应的字符数组中。
注意,最新的C++编译器已经将itoa()函数废弃,而使用_itoa()函数来代替。如果我们使用itoa()函数,可能会看到如下报错:
'itoa': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _itoa.
说明itoa()已经被POSIX标准废弃,而使用_itoa来进行替换。
这一点要注意。
以下是_itoa()函数的代码测试:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
char buffer[33];
printf("Enter a number: ");
scanf("%d", &i);
_itoa(i, buffer, 10); // int类型转换为C字符串,10进制
printf("decimal: %s\n", buffer);
_itoa(i, buffer, 16); // int类型转换为C字符串,16进制
printf("hexadecimal: %s\n", buffer);
_itoa(i, buffer, 2); // int类型转换为C字符串,2进制
printf("binary: %s\n", buffer);
return 0;
}
代码输出:
Enter a number: 100
decimal: 100
hexadecimal: 64
binary: 1100100
谢谢阅读