64,648
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <algorithm>
using namespace std;
struct node
{
int num;
int index;
}r[100];
bool cmp(node x, node y)
{
return x.num < y.num ? true:false;
}
int main()
{
int a[]={1, 1, 4, 2, 3, 2, 1};
int n = sizeof(a)/sizeof(int);
for (int i=0; i < n; ++i)
{
r[i].num = a[i];
r[i].index = i;
}
sort(r, r + n, cmp);
return 0;
}
namespace Solution3
{
template<class T>
struct CompareDeref
{
bool operator()(const T& a,const T& b) const
{
return *a < *b;
}
};
template<class T,class U>
struct Pair2nd
{
const U& operator()(const pair<T,U>& a) const
{
return a.second;
}
};
template<class IterIn,class IterOut>
void sort_idxtbl(IterIn first,IterIn last,IterOut out)
{
multimap<IterIn,int,CompareDeref<IterIn> > v;
for(int i = 0;first != last;++i,++first)
{
v.insert(make_pair(first,i));
}
transform(v.begin(),v.end(),out,Pair2nd<IterIn,int>());
}
}
int main()
{
int ai[10] = {15,12,13,14,18,11,10,17,16,19};
cout << "----------------------" << endl;
vector<int> vecai(ai,ai + 10);
int aidxtbl[10];
Solution3::sort_idxtbl(vecai.begin(),vecai.end(),aidxtbl);
for(int i = 0;i < 10;i++)
{
cout << "i=" << i
<< ",aidxtbl[i]=" << aidxtbl[i]
<< ",ai[aidxtbl[i]]=" << ai[aidxtbl[i]]
<< endl;
}
cout << "----------------------" << endl;
cin.get();
return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int a[]={1,1,4,2,3,2,1};
struct ArrayIndex
{
int value;
int index;
}element;
vector<ArrayIndex> myarray;
for(int i=0;i<sizeof(a)/sizeof(int);++i)
{
element.value=a[i];
element.index=i;
myarray.push_back(element);
}
sort(myarray.begin(),myarray.end(),[&](ArrayIndex x,ArrayIndex y){return x.value<y.value;});
for_each(myarray.begin(),myarray.end(),[&](ArrayIndex x){wcout<<x.index<<endl;});
}