বলুন আমার কাছে পূর্ণসংখ্যার ভেক্টর রয়েছে:
std::vector<int> indices;
for (int i=0; i<15; i++) indices.push_back(i);
তারপরে আমি এটিকে সাজানো ক্রম অনুসারে বাছাই করেছি:
sort(indices.begin(), indices.end(), [](int first, int second) -> bool{return indices[first] > indices[second];})
for (int i=0; i<15; i++) printf("%i\n", indices[i]);
এটি নিম্নলিখিত উত্পাদন করে:
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
এখন আমি 3, 4, 5 এবং 6 নম্বরগুলি শেষ পর্যন্ত স্থানান্তরিত করতে চাই এবং তাদের জন্য উতরিত ক্রমটি রাখি (পছন্দমতো sort
দ্বিতীয়বার ব্যবহার না করে)। অর্থাৎ আমি যা চাই তা এখানে:
14
13
12
11
10
9
8
7
2
1
0
6
5
4
3
এটি std::sort
অর্জনের তুলনা কার্যটি আমি কীভাবে সংশোধন করব ?
std::greater
থেকে <functional>
আপনার ল্যাম্বদার জায়গায় ব্যবহার করা যেতে পারে। আপনার প্রশ্নের হিসাবে, আরও ভার্বোজ তুলনামূলক লেখা যা আপনার মানগুলি যেভাবে চান তা তুলনা করে তা নিশ্চিত করার পক্ষে এটি করা সহজতম উপায়।
return first > second
।
return indices[first] > indices[second]
মানে নাreturn first < second;
?