我需要从std :: vector中获取一系列项目,例如
range = vector[0:n]
在Python中。显而易见的方法是使用迭代。还有其他更好的方法吗?
提前谢谢。
答案 0 :(得分:5)
vector的构造函数之一是:
template <class InputIterator>
vector ( InputIterator first, InputIterator last, const Allocator& = Allocator() );
所以你只需要创建一个传递所需迭代器的新向量。
答案 1 :(得分:2)
vector<T>
有一个构造函数,它接受两个标识范围的迭代器。
示例:
std::vector<int> range( &v[0], &v[0]+n );
请注意,即使v
是常规数组而不是vector
,这也会有效,因为指向数组中元素的指针就像迭代器一样。
答案 2 :(得分:2)
在C ++领域,使用迭代器而不是使用范围。迭代器是容器中指向某个元素的索引。因此,要将迭代器设置为开头,请使用vec.begin()
,并使用n
获取vec.begin() + n
的迭代器。如果你想迭代这个,你可以简单地做
for (atd::vector<Foo>::iterator it = vec.begin(); it != vec.begin() + n; ++it)
如果你想创建一个新的向量,你可以使用Luchian提到的构造函数:
std::vector<Foo> vec2(vec.begin(), vec.begin() + n)