我想初始化一个地图 - 对象“id”,其身份从0到n-1,即
id[0] = 0
id[1] = 1
.
.
id[n-1] = n-1
有没有一种简单的方法 - 一个单行,一个方法在map-object中,只是一些非常简单的东西 - 那样做呢?
答案 0 :(得分:5)
有什么问题
for(unsigned int i = 0; i < n; ++i)
id[i] = i;
答案 1 :(得分:3)
您可以使用
template <class InputIterator>
map(InputIterator f, InputIterator l,
const key_compare& comp)
构造函数的形式,但是您需要构建一个InputIterator,它在您想要的范围内充当生成器函数。这比单独使用for循环要多得多。
答案 2 :(得分:3)
使用密钥为简单索引的地图似乎有点奇怪。你确定你不能使用矢量吗?这样做,您可以使用boost::counting_iterator
填充向量:
std::vector<int> v(boost::counting_iterator<int>(0),
boost::counting_iterator<int>(N-1));
// v is filled with integers from 0 to N-1
然而,与简单的for循环相比,我不确定这是否是一个巨大的收获。
答案 3 :(得分:0)
请注意std :: iota作为数字库(C ++ 0x功能)的一部分:
template <ForwardIterator Iter, HasPreincrement T>
requires OutputIterator<Iter, const T&>
void iota(Iter first, Iter last, T value);