關于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;
}
代碼輸出:
關于 itoa函數 和 _itoa函數 的介紹
iota()函數和itoa()函數很像,要注意區分。itoa()函數是用來将一個int類型轉換為C字元串類型的函數。名稱可以了解為 i - to - a 。而且可以根據參數的不同,将int類型轉換為不同的進制,并儲存在相應的字元數組中。
注意,最新的C++編譯器已經将itoa()函數廢棄,而使用_itoa()函數來代替。如果我們使用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
謝謝閱讀