我有这个代码,它读取用户代码并将其存储在数组中,稍后在每个数组上找到元素的总和并比较它们,代码如下:
#include <iostream>
#include <vector>
#include <numeric>
typedef std::vector<int> int_vec_t;
//Call by reference to set variables in function
void readData(int_vec_t& v1, int_vec_t& v2)
{
v1 = int_vec_t{1,1,8}; //This only works for C++11
v2 = int_vec_t{2,2,2};
}
void readUserData(int_vec_t& v)
{
for(;;)
{
int val;
std::cin>>val;
if(val == 0) break;
v.push_back(val);
}
}
int main()
{
using namespace std;
int_vec_t A;
int_vec_t B;
readData(A,B);
//Or
readUserData(A);
readUserData(B);
int sumA = accumulate(A.begin(), A.end(), 0); //Then use iterators
int sumB = accumulate(B.begin(), B.end(), 0);
cout << ((sumA > sumB) ? "Array A Greater Than Array B\n" : "Array B Greater Than Array A\n");
return 0;
}
但上面的代码会产生以下错误:
test.cpp: In function ‘void readData(int_vec_t&, int_vec_t&)’:
我正在使用g++ test.cpp -o test
来编译代码。我在这里缺少什么?
答案 0 :(得分:3)
你不认为汇编应该是这样的:
$ g++ -std=c++11 test.cpp -o test
?
它继续接受输入,我如何限制它每个阵列只需要5个元素
void readUserData(int_vec_t& v)
{
for(int i = 0; i < 5; i++)
{
int val;
std::cin>>val;
// if(val == 0) return;
v.push_back(val);
}
}
非常感谢,在循环之间如何输出语句以便用户知道他正在为数组1输入数组并在数组2之后?
void readUserData(int_vec_t& v, std::string default = "")
{
for(int i = 0; i < 5; i++)
{
int val;
std::cout << "Enter for "<< default << "[" << i << "]: ";
std::cin>>val;
// if(val == 0) return;
v.push_back(val);
}
}
从main()
您可以发送不同的字符串。
例如:
readUserData(A, "A");
readUserData(B, "B");
答案 1 :(得分:2)
这是我的代码发布为建议的解决方案 c++ passing function into main error
是的,它需要一个C ++ 11编译器,如代码中所述。它从来都不是最终的代码。
我建议OP阅读一本关于C ++的好书。让我建议“C ++编程语言”http://www.amazon.com/The-Programming-Language-3rd-Edition/dp/0201889544