【发布时间】:2012-12-25 17:46:35
【问题描述】:
好的,我还有另一个挑战。我有一个问题要我“将一组整数读入vector。打印每对相邻元素的总和。更改您的程序,使其打印出第一个和最后一个元素的总和,然后第二个和倒数第二个的总和,以此类推。”
目前我已经设法让它添加连续的数字,不完全成对,但尽可能接近。
到目前为止,我为vectors 学习的唯一运算符,以及我希望使用的问题是:v.empty();v.size();v.push_back(t);v[n];v1 = v2;v1 = {a,b,c...};v1 == v2;v1 != v2; <、<=、>、>=
这是我现在的代码:
#include <iostream>
#include <string>
#include <vector>
using std::string; using std::vector; using std::cout; using std::cin; using std::endl;
int main ()
{
vector<unsigned> numbers {5, 6, 7, 8, 9, 10, 11};
unsigned sum;
decltype(numbers.size()) count;
for (count = 0; count < numbers.size(); ++count){
sum = (numbers[count]++) + (numbers[count]);
cout << sum << " ";
}
}
所以我可以让它加 5+6; 6+7; 7+8 等等……但对于每一对和所有其他的,不能 100% 确定从哪里开始。任何指导将不胜感激!
【问题讨论】:
-
sum = (numbers[count]++) + (numbers[count]);是一个非常糟糕的行。sum = 2*numbers[count]+1; numbers[count]++;更清晰; -
为了增加乐趣,当你的类到达迭代器时,重新审视这个问题并尝试使用 std::transform。如需加分,请尝试 boost::transform_iterator 然后(
for循环被禁止)。 -
@MarcGlisse 是的,我迫不及待想要进入迭代器章节!一旦我消化了这里的所有信息,我将继续前进!太棒了!