<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ##實戰c++中的vector系列--使用sort算法對vector<unique_ptr<string>>進行排序(sort函數“應輸入 2 個參數,卻提供了 3 個) 之前博客寫了對vector使用sort算法進行的排序,之前也寫到過`vector<unique_ptr<string>>`的一些處理方法。 今天就寫一下對`vector<unique_ptr<string>>`使用sort算法進行排序。 ~~~ #include<iostream> #include<string> #include<vector> #include<algorithm> #include<memory> bool compare_int(int &lhs, int & rhs) { return lhs > rhs; } bool compare_first_letter(const std::unique_ptr<std::string > &lhs, const std::unique_ptr<std::string > & rhs) { return ((*lhs) < (*rhs)); } bool compare_unique_ptr_int( std::unique_ptr<int > &lhs, std::unique_ptr<int > & rhs) { return *lhs < *rhs; } //bool compare_by_uniqptr(const unique_ptr<int>& a, // const unique_ptr<int>& b) { // return *a < *b; //} int main() { //sort vector<int> std::vector<int> int_vector; int_vector.push_back(5); int_vector.push_back(4); int_vector.push_back(3); int_vector.push_back(6); int_vector.push_back(9); for (int i = 0; i < int_vector.size(); i++) { std::cout << int_vector[i] << " "; } std::cout << std::endl; sort(int_vector.begin(), int_vector.end(), compare_int); for (int i = 0; i < int_vector.size(); i++) { std::cout << (int_vector[i]) << " "; } std::cout << std::endl; // sort vector<unique_ptr<string>> std::vector<std::unique_ptr<std::string>> unique_ptr_string_vector; std::unique_ptr<std::string> unique_ptr_string(new std::string("adr")); unique_ptr_string_vector.push_back(std::move(unique_ptr_string)); std::unique_ptr<std::string> unique_ptr_string8(new std::string("abc")); unique_ptr_string_vector.push_back(std::move(unique_ptr_string8)); std::unique_ptr<std::string> unique_ptr_string7(new std::string("abr")); unique_ptr_string_vector.push_back(std::move(unique_ptr_string7)); std::unique_ptr<std::string> unique_ptr_string6(new std::string("aar")); unique_ptr_string_vector.push_back(std::move(unique_ptr_string6)); std::unique_ptr<std::string> unique_ptr_string2(new std::string("ebr")); unique_ptr_string_vector.push_back(std::move(unique_ptr_string2)); std::unique_ptr<std::string> unique_ptr_string3(new std::string("dbr")); unique_ptr_string_vector.push_back(std::move(unique_ptr_string3)); std::unique_ptr<std::string> unique_ptr_string4(new std::string("cbr")); unique_ptr_string_vector.push_back(std::move(unique_ptr_string4)); std::unique_ptr<std::string> unique_ptr_string5(new std::string("bbr")); unique_ptr_string_vector.push_back(std::move(unique_ptr_string5)); for (int i = 0; i < unique_ptr_string_vector.size(); i++) { std::cout << *(unique_ptr_string_vector[i]) << " "; } std::cout << std::endl; sort(unique_ptr_string_vector.begin(), unique_ptr_string_vector.end(), compare_first_letter); for (int i = 0; i < unique_ptr_string_vector.size(); i++) { std::cout << *(unique_ptr_string_vector[i]) << " "; } std::cout << std::endl; //sort vector<unique_ptr<int>> std::vector<std::unique_ptr<int>> v; std::unique_ptr<int> unique_ptr_int(new int(5)); v.push_back(std::move(unique_ptr_int)); std::unique_ptr<int> unique_ptr_int1(new int(4)); v.push_back(std::move(unique_ptr_int1)); std::unique_ptr<int> unique_ptr_int2(new int(3)); v.push_back(std::move(unique_ptr_int2)); std::unique_ptr<int> unique_ptr_int3(new int(6)); v.push_back(std::move(unique_ptr_int3)); std::unique_ptr<int> unique_ptr_int4(new int(9)); v.push_back(std::move(unique_ptr_int4)); for (int i = 0; i < v.size(); i++) { std::cout << *v[i] << " "; } std::cout << std::endl; //sort(std::make_move_iterator(v.begin()), std::make_move_iterator(v.end()), compare_unique_ptr_int); //for (auto i = v.begin(); i != v.end(); i++) //{ // std::cout << **i << " "; //} //std::cout << std::endl; sort(v.begin(), v.end(), compare_unique_ptr_int); for (auto i = v.begin(); i != v.end(); i++) { std::cout << **i << " "; } std::cout << std::endl; return 0; } //輸出: 5 4 3 6 9 9 6 5 4 3 adr abc abr aar ebr dbr cbr bbr aar abc abr adr bbr cbr dbr ebr 5 4 3 6 9 3 4 5 6 9 ~~~ 其實還很簡單的,但是對于在類中使用sort算法進行排序,需要注意一些問題。 你很能會遇到這樣的錯誤:? sort函數出錯“應輸入 2 個參數,卻提供了 3 個。 在類中你寫了比較函數: ~~~ bool compare_unique_ptr_int( std::unique_ptr<int > &lhs, std::unique_ptr<int > & rhs) { return *lhs < *rhs; } ~~~ 然后在類的某個成員函數中,使用了sort方法進行排序,第三個參數使用compare_unique_ptr_int函數,這個時候就會出現上面所說的錯誤。 但是如何改進呢?? 方法有兩種: 方法一:把compare_unique_ptr_int函數改為靜態方法: ~~~ static bool compare_unique_ptr_int( std::unique_ptr<int > &lhs, std::unique_ptr<int > & rhs) { return *lhs < *rhs; } sort(v.begin(), v.end(), compare_unique_ptr_int); ~~~ 方法二:使用lambda表達式進行 ~~~ sort(v.begin(), v.end(), [](std::unique_ptr<int > &lhs, std::unique_ptr<int > & rhs)(){return *lhs < *rhs;}); ~~~ 這樣就大功告成了!!!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看