c++怎么取vector区间的元素?
有没有现成的STL函数可以直接取得vector某区间的元素,比如{1,4,3,2,5}在[1,3]区间的元素为{4,3,2},且返回值为也是vector类。还是只能自己写...
有没有现成的STL函数可以直接取得vector某区间的元素,比如{1, 4, 3, 2, 5}在[1, 3]区间的元素为{4, 3, 2},且返回值为也是vector类。还是只能自己写函数?
展开
1个回答
展开全部
std::vector<int> v{1,2,3,4,5}; //源vevtor
std::vector<int> result(3); //复制的目标vector,初始有3个默认值。
std::copy(v.begin() + 1,v.begin() + 3,result.begin()); //区间拷贝
上面的是std::copy是现成的,目标vector是已经存在的,且有元素,因为std::copy内部不是调用push_back, 而是元素覆盖。
还有更简单点的。
std::vector<int> v{1,2,3,4,5}; //源vevtor
std::vector<int> result(v.begin() + 1,v.begin() + 3); //利用vector的构造函数就可以了
可以自己封装成函数:
template<typename T>
std::vector<T> RangeCopy(const std::vector<T>& v,int startIndex, int count)
{
return std::vector<T>(v.begin() + startIndex,v.begin() + count);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询