迭代器算术

时间:2013-07-01 03:34:08

标签: c++ iterator

我现在正在使用iterators 算术运算并在小问题上叠加。
我需要对vector<int>第一个和最后一个元素进行 Sum ,然后是vector<int>第二个和最后一个元素vector<int>第三个也是最后一个元素 例如:
按用户输入数字
1 2 3 4 5 6 7 8 9
输出
10 11 12 13 14 15 16 17
一般情况下,代码应该像那样添加 1+9 2+9 3+9 4+9 5+9 6+9 7+9 ......

所以基本上我需要使用iterator使用成员函数*.begin() , *.end() 进行此算术运算的实际代码!我尝试了很多方法,但只有.begin().end()才能解决这个问题。我找到了其他成员函数,但这个函数在STD库中解释,而不是在基础知识级别。因此,如果可能,我需要帮助才能使代码只包含begin()end()成员函数。

我到目前为止的代码

int main()
{  

vector<int> numset;
int num_input;
auto beg=numset.begin(), end=numset.end();
while (cin>>num_input)
{
    numset.push_back(num_input);
}
for (auto it = numset.begin()+1; it !=numset.end(); ++it)
{
    // *it=*it+1+nuset.end(); -- Wrong  X
            // *it+=(end-beg)/2;      -- Totally wrong(and totally stupid) X
            // *it + numset.back()   -- can't use other member functions X 
    //////// I've stack here dont know what code need //////

              cout<<*it<<endl;    
}

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

您执行的操作是*it+*(it-1)。 (在代码中添加更多括号和空格可能会有所帮助。)这会在序列中添加两个相邻的元素。

序列中的最后一个元素是numset.back()。所以请尝试使用*it + numset.back()。并且不需要从第二个元素开始,因为您确实要打印第一个和最后一个元素的总和。如果你不想打印最后一个元素的总和,你应该停在end() - 1