我想提取一个子矢量。然后修改其影响原始矢量的元素。我的示例代码如下:子矢量修改原始矢量
#include <vector>
#include <iostream>
using namespace std;
void printvec(vector<int>& v){
for(int i = 0;i < v.size();i++) {cout << v[i] << " ";}
cout << endl;
}
int main(){
vector<int> original;
for(int i = 1;i <= 10;i++) original.push_back(i);
printvec(original);
vector<int> subvector(original.begin()+4, original.end()-2);
subvector[0]=0;
subvector[1]=0;
printvec(subvector);
printvec(original);
return 0;
}
在上面的代码中,子向量不会修改向量。可以有人指向我一个优雅的方式,使一个子矢量修改原始矢量(希望没有显式使用指针,如果可能的话)。
int * subvector = original.begin()+ 4;'会做的伎俩,虽然它绝对使用指针。 – dasblinkenlight
@dasblinkenlight:这不会给你一个'size()'函数;) – MikeMB