【发布时间】:2018-04-07 17:17:25
【问题描述】:
这是我的代码
typedef struct Data{
int date;
string currency;
string exchange;
float low;
float high;
long long int daily_cap;
}Data;
bool comp2(const Data *data1, const Data *data2){
return (data1->date < data2->date);
}
bool comp1(Data *data1, Data *data2){
if (data1->date != data2->date)
return (data1->date < data2->date);
if (data1->currency != data2->currency)
return (data1->currency < data2->currency);
else
return (data1->exchange < data2->exchange);
}
int main()
{
ifstream infile("test.txt");
Data tmp;
vector<Data*> P_data;
while (infile){
Data *tmp = new Data();
infile >> tmp->date;
infile >> tmp->currency;
infile >> tmp->exchange;
infile >> tmp->low;
infile >> tmp->high;
infile >> tmp->daily_cap;
P_data.push_back(tmp);
}
sort(P_data.begin(), P_data.end(), comp1);
// bool yes = binary_search(P_data.begin()+1, P_data.end(), 20140212, comp2);
int c = 0;
for (int i = 0; i<= 20; ++i){
cout << P_data[i]->date << " " << P_data[i]->exchange << " " << c << endl;
c++;
}
}
第一个问题是为什么排序后,
第一行是
-842150451 0
第二行开始排序
20130101 Wii 0 ....
第二个问题是binary_search
我的代码有什么问题吗?
错误信息显示
bool(const Data*, const Data*) 无法将 arg1 'const int' 转换为 'const Data*'
【问题讨论】:
标签: c++ sorting binary-search