0

我对 c++ 很陌生。

我想知道是否有任何方法可以让向量的指针指向一个数组。

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

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

我有一个名为“结果”的数组。

我想让'vb'指向'result'的第一个元素,'ve'指向'result'的最后一个元素。

我试过这个:

vb = &result;
int resultLen = result.size();
ve = &(result+resultLen);

但我最终遇到了这个错误:

`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
    }

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

4

2 回答 2

0

确实有可能,这是您的示例代码,经过我的简化:

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

请记住您正在访问 iterator::end,这意味着过去的最后一个值

于 2013-07-16T13:02:27.217 回答
0

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

于 2013-07-07T10:06:22.743 回答