我在c程序中使用矢量(我是初学者).
我需要将一部分向量发送到一个函数.
我需要将一部分向量发送到一个函数.
如果是c,我需要这样做(使用数组):
int arr[5] = {1,2,3,4,5}; func(arr+2); //to send part array {3,5}
有没有办法创建一个新的向量与最后一部分?
解决方法
通常的方法是传递迭代器范围.这将适用于所有类型的范围,包括属于标准库容器和普通数组的范围:
template <typename Iterator> void func(Iterator start,Iterator end) { for (Iterator it = start; it !=end; ++it) { // do something } }
然后
std::vector<int> v = ...; func(v.begin()+2,v.end()); int arr[5] = {1,5}; func(arr+2,arr+5);
注意:虽然该函数适用于各种范围,但并不是所有的迭代器类型都支持通过v.begin()中使用的运算符的增量.对于替代方案,请查看std::advance
和std::next
.