将第一个+最后一个元素,第二个+第二个到最后一个元素等添加到向量中

时间:2015-02-12 03:37:18

标签: c++

这是我到目前为止所拥有的。它似乎只添加第一个+最后一个,第二个+最后一个等等。我无法弄清楚如何使它添加第二个+倒数第二个等等。 它是一个动态向量,不能使用迭代器。

#include iostream
#include vector
using namespace std;

int main()
{
    vector<int> ack;
    int add;
    while(cin >> add)
    {
        ack.push_back(add);
    }

    for(size_t i = 0; i < ack.size(); i++)
    {
        cout << ack[i] + ack[ack.back() - 1] << endl;
    }
 }

1 个答案:

答案 0 :(得分:2)

你的代码是错误的。 ack.back()只是最后一个元素的值 - 与您尝试执行的任何操作无关。此外,ack.back() - 1不是循环索引的函数 - 因此ack[ack.back() - 1]只是每次循环时都会添加的常量。

由于每次都需要“last-Nth”元素,这意味着您需要从size()中减去某些内容。所以你想要做的是:

for(size_t i = 0; i < ack.size(); i++)
{
    cout << ack[i] + ack[ack.size() - i - 1] << endl;
}