شما برای اینکار می تونید با استفاده از pair اندیس را تعریف کنید و با استفاده از تابع sort مربوط به stl و عبارت lamda به راحتی اینکارو انجام بدید به صورت زیر:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <stdlib.h>
using namespace std;
typedef struct circle{
int x;
int y;
int radis;
};
vector <pair<circle,int>> points;
int _tmain(int argc, _TCHAR* argv[])
{
points.resize(10);
for (size_t i=0;i < points.size();i++)
{
circle p;
p.x = rand() %100;
p.y = rand() %100;
points[i] = make_pair(p,i);
}
sort(points.begin(),points.end(),[](const pair<circle,int> &l,const pair<circle,int> &r){
return l.first.radius < r.first.radius;
});
for (size_t i=0;i < points.size();i++)
{
circle p =points[i].first;
cout << "x:"<< p.x << " y:"<<p.y << " index:"<< points[i].second << endl;
}
return 0;
}