<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系列--vector<unique_ptr<>>作為函數的參數 現在就討論一下,把vector作為函數的參數進行傳遞。? 也是直接上一段代碼: ~~~ #include<iostream> #include<vector> #include <memory> using namespace std; void display_vector(vector<unique_ptr<int>> vec); int main() { vector<unique_ptr<int>> vec; unique_ptr<int> s1(new int(1)); unique_ptr<int> s2(new int(2)); unique_ptr<int> s3(new int(3)); unique_ptr<int> s4(new int(4)); vec.push_back(std::move(s1)); vec.push_back(std::move(s2)); vec.push_back(std::move(s3)); vec.push_back(std::move(s4)); display_vector(vec);//還是所有權的問題 return 0; } void display_vector(vector<unique_ptr<int>> vec) { for (auto it = vec.begin(); it != vec.end(); it++) { cout << **it << endl; } } ~~~ 這個時候給display_vector傳遞std::move(vec)作為參數,并看一下調用display_vector函數后,vec變成了什么呢? ~~~ #include<iostream> #include<vector> #include <memory> using namespace std; void display_vector(vector<unique_ptr<int>> vec); int main() { vector<unique_ptr<int>> vec; unique_ptr<int> s1(new int(1)); unique_ptr<int> s2(new int(2)); unique_ptr<int> s3(new int(3)); unique_ptr<int> s4(new int(4)); vec.push_back(std::move(s1)); vec.push_back(std::move(s2)); vec.push_back(std::move(s3)); vec.push_back(std::move(s4)); display_vector(std::move(vec)); cout << "now, vec size:" << vec.size() << endl; return 0; } void display_vector(vector<unique_ptr<int>> vec) { for (auto it = vec.begin(); it != vec.end(); it++) { cout << **it << endl; } } //輸出: 1 2 3 4 now, vec size:0 ~~~ 傳統的想法,我們傳遞的是值,而非引用,那為什么會影響vec呢,還是所有權轉移問題。 那么我們如何不改變vec呢? 只要按引用、或是const引用傳遞即可,就不涉及到所有權的轉移問題: ~~~ #include<iostream> #include<vector> #include <memory> using namespace std; void display_vector(vector<unique_ptr<int>> &vec); int main() { vector<unique_ptr<int>> vec; unique_ptr<int> s1(new int(1)); unique_ptr<int> s2(new int(2)); unique_ptr<int> s3(new int(3)); unique_ptr<int> s4(new int(4)); vec.push_back(std::move(s1)); vec.push_back(std::move(s2)); vec.push_back(std::move(s3)); vec.push_back(std::move(s4)); display_vector(vec); cout << "now, vec size:" << vec.size() << endl; return 0; } void display_vector(vector<unique_ptr<int>> &vec) { for (auto it = vec.begin(); it != vec.end(); it++) { cout << **it << endl; } } //輸出: 1 2 3 4 now, vec size:4 ~~~
                  <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>

                              哎呀哎呀视频在线观看