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]
。
答案 0 :(得分:0)
我对你想做什么感到有点困惑,但我猜它是这样的:
//you have
void get_value(vector<int>& v, int start, int end);
//you want
void get_value(vector<int>* v, const int curVectorIdx, const int maxVectors, int start, int end)
{
int nextVectorIdx = curVectorIdx + 1;
if(nextVectorIdx < maxVectors) {
vector<int>* nextVector = v + nextVectorIdx;
get_value(nextVector, nextVectorIdx, maxVectors, nextVector->begin(), nextVector->end());
}
}
答案 1 :(得分:0)
我认为你需要改变
get_value(triangle_array[row], 0, 0); this line
致get_value(triangle_array, 0, 0);