<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 簡介 函數適配器bind1st bind2nd 現在我有這個需求 在遍歷容器的時候,我希望將容器中的值全部加上100之后顯示出來,怎么做? # bind1st和bind2nd ~~~ #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include <string> #include<vector> #include <set> //multset也是這個頭文件 #include <map> #include<functional> #include<algorithm> //第一步:繼承binary_function<參數1,參數2,返回類型> struct Myfunc :public binary_function<int, int, void> { void operator()(int v1, int v2)const //第二步:加上const成為常函數,參數變2個 { cout << "v1=" << v1 << endl; cout << "v2=" << v2 << endl; //cout << v1 << " " << endl; cout << v1 + v2 << endl;//第三步:實現函數體 } }; //需求:打印時,每個元素加100然后打印出來 void test() { vector<int> v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); //for_each(v.begin(), v.end(), Myfunc()); //第四步:用bind2nd來綁定函數對象 //2.bind1st和bind2nd的區別 //bind1st把100綁定給第一個參數 //bind2nd把100綁定給第二個參數 for_each(v.begin(), v.end(), bind2nd(Myfunc(), 100)); } ~~~ # not1和not2取反 1. not1和not2區別: not針對一元函數對象,not2針對二元函數對象 2. 使用not1和not2 ~~~ struct MyNotfunc { bool operator() (int v) { return v >= 20; } }; void test() { vector<int> v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); vector<int>::iterator it = find_if(v.begin(), v.end(), MyNotfunc()); if (it == v.end()) { cout << "查找失敗" << endl; } else { cout << "查找成功: " << *it << endl; } } ~~~ **適配** ~~~ //第一步繼承 struct MyNotfunc : public unary_function<int, bool> { //第二步:變為常函數 bool operator() (int v) const { return v >= 20; } }; void test() { vector<int> v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); //第三步適配 vector<int>::iterator it = find_if(v.begin(), v.end(), not1(MyNotfunc())); if (it == v.end()) { cout << "查找失敗" << endl; } else { cout << "查找成功: " << *it << endl; } } ~~~ # 普通函數適配 普通函數進行適配: `ptr_fun` ~~~ void myprint2(int val, int val2) { cout << val + val2 << " "; } void test03() { vector<int> v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); //第二步:把普通函數變為函數對象 ptr_fun for_each(v.begin(), v.end(), bind2nd(ptr_fun(myprint2),100)); } ~~~ # 成員函數適配 1. `mem_fun`: 如果存儲的是對象指針,需要使用`mem_fun` 2. `mem_fun_ref`:如果存儲的是對象,需要使用`mem_fun_ref` ~~~ class Maker { public: string name; int age; public: Maker(string name, int age) { this->name = name; this->age = age; } //成員函數 void MyprintMaker() { cout << "Name: " << this->name << " Age: " << this->age << endl; } }; void test03() { vector<Maker> v; v.push_back(Maker("aaa", 10)); v.push_back(Maker("bbb", 20)); v.push_back(Maker("ccc", 30)); //當容器存儲的是對象,用mem_fun_ref適配他的成員函數 for_each(v.begin(), v.end(), mem_fun_ref(&Maker::MyprintMaker)); cout << "-------------" << endl; vector<Maker*> vp; vp.push_back(new Maker("aaa", 10)); vp.push_back(new Maker("bbb", 20)); vp.push_back(new Maker("ccc", 30)); //當容器存儲的是對象指針,用mem_fun適配他的成員函數 for_each(vp.begin(), vp.end(), mem_fun(&Maker::MyprintMaker)); } ~~~
                  <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>

                              哎呀哎呀视频在线观看