c++;,如何更改指针的对象 我对C++很陌生。< /P>

c++;,如何更改指针的对象 我对C++很陌生。< /P>,c++,arrays,pointers,vector,reference,C++,Arrays,Pointers,Vector,Reference,我想知道有没有办法让向量的指针指向数组 在我的程序中,我有指向向量的第一个和最后一个元素的向量迭代器对象,如下所示: vector<int>::iterator vb = vec.begin(); vector<int>::iterator ve = vec.end(); 但我最后犯了一个错误: `error: no match for ‘operator=’ in ‘vb = & result’ 我尝试了一些变化,例如: *vb = &result;

我想知道有没有办法让向量的指针指向数组

在我的程序中,我有指向向量的第一个和最后一个元素的向量迭代器对象,如下所示:

vector<int>::iterator vb = vec.begin();
vector<int>::iterator ve = vec.end();
但我最后犯了一个错误:

`error: no match for ‘operator=’ in ‘vb = & result’
我尝试了一些变化,例如:

*vb = &result;
int resultLen = result.size();
*ve = &(result+resultLen);
它也不起作用

任何帮助都将不胜感激,并提前向您表示感谢

============================================================================= 更新。这是我试图编写的程序的一个简单版本

vector<int>::iterator vb = vec1.begin(); 
vector<int>::iterator ve = vec1.end();

int arr = {1,2,3}
int result [10];

while (True) {
    subtraction (vb, ve, arr, arr+5, result); 
// let's say the vector has {1,2,3,4,5}. I am subtracting array from vector like this: 12345 - 123 until it becomes less than 123. 
        /*I now need to update the vector from which I am subtracting the array to the result array.*/
        vb = &result; //points to the first element of array
        int resultLen = result.size();
        ve = &result+resultLen; //points to the last element of array
    }
vector::迭代器vb=vec1.begin();
向量::迭代器ve=vec1.end();
int arr={1,2,3}
int结果[10];
while(True){
减法(vb、ve、arr、arr+5、结果);
//假设向量有{1,2,3,4,5},我从向量中减去数组,像这样:12345-123,直到它小于123。
/*现在,我需要更新从中减去数组的向量到结果数组*/
vb=&result;//指向数组的第一个元素
int resultLen=result.size();
ve=&result+resultLen;//指向数组的最后一个元素
}

更新向量是我遇到问题的地方

因为
结果
不是向量。不能将向量的迭代器指定给数组。您只能将其分配给
int
类型向量。

这是可能的,下面是您的示例代码和我的简化:

std::vector<int> vec1;

vec1.push_back(1);
vec1.push_back(2);
vec1.push_back(3);

std::vector<int>::iterator vb = vec1.begin();
std::vector<int>::iterator ve = vec1.end();

int result[] = {3,2,1};
*vb = *result; //points to the first element of array
int resultLen = sizeof(result)/sizeof(result[0]);
*ve = *(result+resultLen-1); //points to the last element of array

std::cout<<vec1[0]<< " " <<vec1[1] << " " <<vec1[2] << " " <<vec1[3];

记住,您正在访问迭代器::end,这意味着超过最后一个值

您试图让向量迭代器以某种方式“指向”普通数组?不,这毫无意义。您试图实现什么?某些计算的结果存储在数组中,'result'和'vb'以及've'是循环中计算的输入。我需要在每次运行时更新“vb”和“ve”。我希望我在这一点上说得很清楚。不是真的。请试着发布一个简短的例子,说明你到底想做什么。行。我可以发布我的代码块,但这并没有真正的帮助…我将不得不发布整个程序。给我一分钟。我可以看出我试图做的是非法的,我问是否有一个解决办法来完成这一点。某些计算的结果存储在数组中,'result'和'vb'以及've'是循环中计算的输入。我需要在每次运行时更新“vb”和“ve”。我希望我能把这件事讲清楚。
std::vector<int> vec1;

vec1.push_back(1);
vec1.push_back(2);
vec1.push_back(3);

std::vector<int>::iterator vb = vec1.begin();
std::vector<int>::iterator ve = vec1.end();

int result[] = {3,2,1};
*vb = *result; //points to the first element of array
int resultLen = sizeof(result)/sizeof(result[0]);
*ve = *(result+resultLen-1); //points to the last element of array

std::cout<<vec1[0]<< " " <<vec1[1] << " " <<vec1[2] << " " <<vec1[3];
3 2 3 1