Я нашел этот вопрос ниже, который получил несколько хороших ответов:
что, если я расширю проблему до 2 индексов, скажем, например, матрицу 2x3
1 5 6
4 8 2
отсортировано (по убыванию, ни по столбцам, ни по строкам, только по значениям)
8 6 5 4 2 1
выходные индексы
(1,1) (0,2) (0,1) (1,0) (1,2) (0,0)
Я пытался, но уверен, что мне нужна помощь, а любая помощь будет значить так много...
template <typename T>
vector <vector <size_t>> sort_indexes(const vector <vector <T>> &v)
//// initialize original index locations
vector<vector<size_t>> idx(v.size());
for (size_t i = 0; i != idx.size(); ++i) {
idx[i] = i;
for (size_t j = 0; i != idx[i].size(); ++j) {
idx[j] = j;
}
}
// sort indexes based on comparing values in v
sort(idx.begin(), idx.end(),
[&v](size_t i1, size_t i2) {return v[i1] > v[i2]; });
return idx;
}
интервал основной () {
vector<vector<int>> v;
v[0].push_back(10);
v[0].push_back(1);
v[0].push_back(3);
v[1].push_back(20);
v[1].push_back(30);
v[1].push_back(40);
for (auto i = 0; i < v.size(); i++) {
for (auto j:sort_indexes(v) )
cout << i << j <<" "<< v[i][j] << endl;
}
cin.get();
return 0;
}
я принял это https://stackoverflow.com/a/12399290/5807825 для своей проблемы. Я попробовал некоторые настройки на code, может ли кто-нибудь пролить свет, пожалуйста, какие части неверны или все... надеюсь, что нет.