如何从C ++中的vector获取一系列项目

时间:2012-11-09 13:58:42

标签: c++

我需要从std :: vector中获取一系列项目,例如

range = vector[0:n]
在Python中

。显而易见的方法是使用迭代。还有其他更好的方法吗?

提前谢谢。

3 个答案:

答案 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)