【发布时间】:2016-09-12 19:31:39
【问题描述】:
我叫马特。我是 StackOverflow 的新手,对 C++ 也很陌生。目前正在学习 Lippman 的 C++ Primer。
我在书中做一个练习,任务是将整数读入向量中,然后通过第一个和最后一个、第二个和第二个到最后一个、第三个和第三个等来将这些整数相乘。
我自己做的,没有查任何东西,否则如果我只是复制的话,我几乎学不会......我的程序编译并按预期运行。我的问题是:我做对了吗?有没有更有效的方法?
我不仅想学习如何编写工作代码,而且我想正确地做。提前谢谢!
#include <iostream>
#include <string>
#include <vector>
#include <cctype>
using std::cout; using std::cin; using std::vector; using std::endl;
using std::string;
int main()
{
vector<int> numbers;
int usernum = 0;
cout << "Enter some numbers: ";
while (cin >> usernum)
{
numbers.push_back(usernum);
}
unsigned maxElement = numbers.size() - 1;
unsigned minElement = 0;
for (auto i : numbers)
{
cout << numbers[minElement] << " * " << numbers[maxElement] << " = " << numbers[minElement] * numbers[maxElement] << "\n";
++minElement;
--maxElement;
}
return 0;
}
【问题讨论】:
-
如果您有有效的代码,并且正在寻求有关如何改进它的建议,Code Review 可能是发布您问题的更好网站。
-
你的 for 循环遍历了整个向量,以为它只需要遍历向量的一半。
-
@SomeGuy 你能告诉我是怎么做到的吗?另外,我注意到(这可能是您的意思,它将所有内容乘以两次,将操作数放在不同的边上。一旦它们被乘以一次,我将如何做一个停止循环的条件?
-
如果您的程序正常运行,这将是codereview.stackexchange.com 的好帖子。
-
@RSahu 是的,我注意到它实际上并没有完全按预期工作。它通过向量并将所有内容相乘两次,因为 maxElement 一直到开始,而 minElement 一直到结束。每次只完成一次操作后,不知道如何停止它
标签: c++ loops c++11 vector c++14