যখন কলিং std::sort()
একটি উপর std::array
:
#include <vector>
#include <array>
#include <algorithm>
int main() {
std::vector<int> foo{4, 1, 2, 3};
sort(begin(foo), end(foo));
std::array<int, 4> foo2{4, 1, 2, 3};
sort(begin(foo2), end(foo2));
}
জিসিসি এবং ক্ল্যাং উভয়ই সাজানোর ক্ষেত্রে ত্রুটি দেয় std::array
- ক্ল্যাং বলে
ত্রুটি: অঘোষিত শনাক্তকারী 'সাজানোর' ব্যবহার; আপনার মানে 'স্টাডি :: সাজানো'?
সমস্যার std::sort(begin(foo2), end(foo2))
সমাধান করতে পরিবর্তন করা হচ্ছে ।
এমএসভিসি লিখিত হিসাবে উপরের কোডটি সংকলন করে।
কেন মধ্যবর্তী চিকিৎসায় পার্থক্য std::vector
এবং std::array
; এবং কোন সংকলক সঠিক?
std::sort
দিকে পরিচালিত করে (যেমন আপনি ইতিমধ্যে পেয়েছেন এবং )? std::begin
std::end
namespace std
যেখানে সাধারণ পয়েন্টার টাইপটি কাজ করত। আমি বিশ্বাস করি যে এটি অতিরিক্ত কাজগুলি এবং অন্যান্য সাধারণ ত্রুটিগুলি সনাক্ত করতে ডিবাগ-বিল্ড চেক সন্নিবেশ করানো।
sort(...
->std::sort(...
। আমার ধারণা , এডিএল (যুক্তি নির্ভর নির্ভরতা) যা আপনাকে ট্রিপ করছে। যে, বা ছাড়ের গাইড। যে কোনো ক্ষেত্রে; আপনি যে ফাংশনগুলি কল করেন তা সর্বদা যোগ্যতা অর্জন করুন।