0

我现在正在处理iterators 算术运算和小问题的堆栈。
我需要计算第一个和最后一个元素的总和,然后是第二个和最后一个元素,第三个和最后一个元素 示例:用户输入的数字输出应该是通常代码应该像这样添加vector<int>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需要使用成员函数来进行这个算术运算的实际代码 !我已经尝试了很多方法,但我没有想到如何仅使用and来执行此操作。我找到了其他成员函数,但这个函数在 STD 库中进行了解释,而不是在基础知识级别。因此,如果可能的话,我需要帮助来制作仅包含成员函数的代码。*.begin() , *.end() .begin().end()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;    
}

感谢您的时间。

4

1 回答 1

0

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

序列中的最后一个元素是numset.back()。所以试试吧*it + numset.back()。并且没有必要从第二个元素开始,因为您确实想要打印第一个和最后一个元素的总和。但是,如果您不想打印最后一个元素与自身的总和,则应该在 停止end() - 1

于 2013-07-01T03:39:36.617 回答