我有這樣的代碼在那裏讀取用戶代碼,並將其存儲在陣列中,後來發現每個陣列上的元素的總和,並比較兩者的用戶輸入,該代碼如下:C++讀取比較陣列
#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
編譯代碼。我在這裏錯過了什麼?
這不是錯誤。這是說錯誤在這個函數中。順便說一下,你應該只能說'v1 = {1,1,8};'。 – chris 2013-03-05 15:19:55
@chris那麼我該如何修改readData(int_vec_t&v1,int_vec_t&v2)和readUserData(int_vec_t&v)函數? – 2013-03-05 15:22:01
你的代碼編譯罰款[這裏](http://liveworkspace.org/code/SWmBI$1) – 2013-03-05 15:22:13