static int sum = 0;
static int loop = 0;
void put_into_vector( ifstream& ifs, vector<int>& v )
{
// String to store our file input string
string s;
// Extracts characters from the input sequence until a delimited is found
getline( ifs, s );
// Input string stream class to modify the strings
istringstream iss( s );
// Skip all the white spaces.
iss >> skipws;
// Function to check if stream's error flags (eofbit, failbit and badbit) are set.
if(iss.good())
{
// Copies elements within the specified range to the container specified.
copy( istream_iterator<int>( iss ), istream_iterator<int>(),back_inserter(v));
}
}
void get_value(vector<int>& v, int start, int end)
{
while(loop < 4)
{
if(start == end)
{
sum = sum + v[start];
loop++;
get_value(v,start,end+1);
}
if(v[start] > v[end])
{
sum = sum + v[start];
loop++;
get_value(v,start,end);
}
if(v[start] < v[end])
{
sum = sum + v[end];
loop++;
get_value(v,end,end+1);
}
}
}
int main()
{
vector<int> triangle_array[4];
ifstream ifs("numbers.txt");
for(int i = 0; i < 4; i++)
{
put_into_vector(ifs, triangle_array[i]);
}
int row = 0;
get_value(triangle_array[row], 0, 0);
return 0;
}
Я пытаюсь запустить мой код. Код читает текстовый файл, который выглядит следующим образом:
5
8 1
4 8 3
0 7 12 4
Когда я вызываю функцию get_value и передаю аргументы, она указывает на первый вектор
это v [0] = 5. В первом условии, когда start == end, я обновляю значение max, но после этого я хочу снова вызвать ту же функцию, но передать следующий вектор, т.е. v [1]
который имеет "8,1". Я не могу этого сделать, потому что это дает мне ошибку при записи v [1] или чего-либо внутри него.
Ошибка: error C2664: 'get_value' : cannot convert parameter 1 from 'int' to 'std::vector<_Ty> &'
Вы знаете способ, которым я могу назвать его рекурсивно, передавая vec, который указывает на следующую строку, то есть vec[0]
, затем vec[1],vec[2]
и vec[3]
.