【发布时间】:2015-01-07 01:57:03
【问题描述】:
在我目前正在处理的一个程序中,我有一个模板函数包含在一个单独的 .h 文件中,它从 .txt 文件中读取五列数据。数据被传递给主程序,在这种情况下,我只关心数组标题“MISC_DATA”。我正在尝试确定数组“MISC_DATA”中的最大值,并编写了另一个必须将数据传递给的函数,以确定这一点。但是,编译器告诉我它无法识别函数调用“Maximum_Value”。我很确定例程调用中包含的变量 MISC_DATA 存在问题,而不是函数本身。要么它无法将 MISC_DATA 识别为数组,要么我的语法错误。我只包括重要的代码 sn-ps 以使其更具可读性。 Read_Five_Columns 函数工作正常,它是函数“Maximum_Value”,由于指针数组 MISC_DATA 在主程序中的写入方式,编译器无法识别该函数。为澄清起见,函数调用中的变量 MISC_DATA 是包含数组的浮点数,变量“size_Mis”是包含数组大小的整数。任何想法将不胜感激。
int main(int argc, const char * argv[]) {
#include "Use_RNG.h"
#include "Read_Columnar_File.h"
#include <fstream>
#include <iostream>
std::vector<std::string> str3;
std::vector<int> str4;
std::vector<char> str5;
std::vector<int> str6;
unsigned long size_Mis;
std::vector<float> MISC_DATA; // Reads in Misc. spending data
char File1[8];
strcpy(File1, "Misc.txt");
Read_Five_Columns(File1,MISC_DATA,str3,str4,str5,str6);
str3.clear(); str4.clear(); str5.clear(); str6.clear();
size_Mis = MISC_DATA.size();
float value;
value = Maximum_Value(MISC_DATA,size_Mis);
end_time = clock();
std::cout << std::endl << "Total Time: " << (end_time-start_time)/CLOCKS_PER_SEC << std::endl;
return 0;
}
int Maximum_Value(float *array,int array_size)
{
float max = 0;
for(int i =10; i < array_size-1; i++)
{
if(array[i] > max) max = array[i];
}
return max;
}
【问题讨论】:
-
为什么
Maxmimum_Value返回int而不是float? -
MISC_DATA是std::vector,而不是数组或指针。 -
并且不要在函数中包含头文件。
-
感谢 cmets。头文件定义在main调用后被错误的剪切和粘贴,但在实际程序中是在前面列出的。在点击发送之前,我应该仔细检查一下。你是对的,我没有正确理解向量和数组之间的区别。
标签: c++ arrays function pointers vector