我的结构数据为:
typedef struct
{
int num,index;
} data;
和我的排序功能:
bool comp(const data &i , const data &j)
{
return (i.num < j.num);
}
这是我的主要功能:
int t,n,p,tcase,i,j;
vector<data> a;
vector<int > b ;
cin >> n;
a.resize(n);
b.resize(n);
j=0;
for(i=0 ; i<2*n ; i++)
{
if(i%2)
{
b.emplace_back();
cin >> b[j];
j++;
}
else
{
a.emplace_back();
cin >> a[j].num;
a[j].index = j;
}
}
for(i=0 ; i<n ; i++)
{
cout << a[i].num << endl;
}
cout << endl;
sort(a.begin() , a.end() , comp);
for(i=0 ; i<n ; i++)
{
cout << a[i].num << endl;
}
a.erase(a.begin() , a.end());
b.erase(b.begin() , b.end());
tcase++;
所以当我使用以下输入运行我的程序时:
4 15 25 30 35 45 50 10 20
那么我的预期答案应该是:
10 15 30 45
但我的计划是:
0 0 0 0
我在哪里做错了?
答案 0 :(得分:0)
只是评论这些行。
a.emplace_back();
和
b.emplace_back();
你很高兴。
是的,emplace_back将新元素追加到容器的末尾。而你在这里不需要它。 链接:http://ideone.com/o92WE6
答案 1 :(得分:-1)
您可以将比较函数声明为类和过载()运算符,以便于实现
class Compare
{
public:
bool operator()(f_coord a,f_coord b)
{
return(a.val>b.val);
}
};