c++生成遞增序列

 

 

遞增的vector數組

 

原生數組和vector、array都不支持構造一個遞增的數組,好比一個包含0~999的size爲1000的數組。ios

int ids[1000] = {};
for (int i = 0; i < 1000; ++i)
{
	ids[i] = i;
}

若是是std::vector,則是:數組

std::vector<int> ids;
ids.resize(1000);
for (int i = 0; i < 1000; ++i)
{
	ids[i] = i;
}

也有人用使用lambda表達式來實現spa

如今介紹C++11新增的std::iota,須要包含頭文件numeric
可能的實現:
官方文檔:https://en.cppreference.com/w/cpp/algorithm/iota

.net

template<class ForwardIterator, class T>
void iota(ForwardIterator first, ForwardIterator last, T value)
{
    while(first != last) {
        *first++ = value;
        ++value;
    }
}

使用舉例1,我用的好像能夠:code

#include <numeric>
#include <iostream>
#include <vector>
#include <iterator>

std::vector<size_t> idx(scores.size());
	std::iota(idx.begin(), idx.end(), 0);

這個沒試: blog

#include <numeric>
#include <iostream>
#include <vector>
#include <iterator>

int main()
{
	std::vector<int> ivec(10);
	std::iota(ivec.begin(), ivec.end(), 4);
	//for (auto &it: ivec)
	//{
	//	std::cout << it << " ";
	//}

	//或者用下面的一句話輸出ivec中內容
	std::copy(ivec.begin(), ivec.end(), std::ostream_iterator<int>(std::cout, " "));

	getchar();
	return 0;
}
std::iota(ivec.begin(), ivec.end(), 4);
相關文章
相關標籤/搜索