<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國際加速解決方案。 廣告
                ## Tuple ### 頭文件: `"boost/tuple/tuple.hpp"` 它包含了 `tuple` 類模板及庫的核心部分。 ``` Header: "boost/tuple/tuple_io.hpp" ``` 包含了對 `tuple` 的輸入輸出操作符。 ``` Header: "boost/tuple/tuple_comparison.hpp" ``` 包含了 `tuple` 的關系操作符。 Tuple 庫位于 `boost` 里的嵌套名字空間 `boost::tuples` 中。要使用 tuples, 需要包含 "`boost/tuple/tuple.hpp"`, 它包含了核心庫。要進行輸入輸出操作,就包含 `"boost/tuple/tuple_io.hpp"`, 要支持 `tuple` 的比較,就包含 `"boost/tuple/tuple_comparison.hpp"`. 有些 Boost 庫提供一個包含了所有相關庫的頭文件以方便使用;但 Boost.Tuple 沒有。原因是把庫分到各個不同的頭文件中可以減少編譯時間;如果你不使用關系操作符,你就無須為此付出時間和依賴性的代價。為了方便使用,Tuple 庫中有些名字位于名字空間 `boost`:如 `tuple`, `make_tuple`, `tie`, 和 `get`. 以下是 Boost.Tuple 的部分摘要,列出并簡要討論了最主要的一些函數。 ``` namespace boost { template <class T1,class T2,...,class TM> class tuple { public: tuple(); template <class P1,class P2...,class PM> tuple(class P1,class P2,...,PN); template <class U1,class U2,...,class UN> tuple(const tuple<U1,U2,...,UN>&); tuple& operator=(const tuple&); }; template<class T1,class T2,...,class TN> tuple<V1,V2,...,VN> make_tuple(const T1& t1,const T2& t2,...,const TN& tn); template<class T1,class T2,...,class TN> tuple<T1&,T2&,...,TN> tie(T1& t1,T2& t2,...,TN& tn); template <int I,class T1,class T2,...,class TN> RI get(tuple<T1,T2,...,TN>& t); template <int I,class T1,class T2,...,class TN> PI get(const tuple<T1,T2,...,TN>& t); template <class T1,class T2,...,class TM, class U1,class U2,...,class UM> bool operator==(const tuple<T1,T2,...,TM>& t, const tuple<U1,U2,...,UM>& u); template <class T1,class T2,...,class TM, class U1,class U2,...,class UM> bool operator!=(const tuple<T1,T2,...,TM>& t, const tuple<U1,U2,...,UM>& u); template <class T1,class T2,...,class TN, class U1,class U2,...,class UN> bool operator<(const tuple<T1,T2,...,TN>&, const tuple<U1,U2,...,UN>&); } ``` ### 成員函數 ``` tuple(); ``` `tuple` 的缺省構造函數初始化所有元素,這意味著這些元素必須是可以缺省構造的,它們必須有一個公有的缺省構造函數。任何從這些所含元素的構造函數拋出的異常都會被傳播。 ``` template <class P1,class P2...,class PM> tuple(class P1,class P2,...,PN); ``` 這個構造函數接受一些參數,用于初始化 `tuple` 相應元素。對于一些帶有非缺省構造類型的 `tuple` ,就需要用這種構造方式;不能缺省構造一個 `tuple` 而不構造它的所有元素。例如,引用類型的元素必須在構造時初始化。注意,參數的數量不必與 tuple 類型中的元素數量一致。可以僅給出部分元素的值,而讓剩余元素初始化為缺省值。任何從元素的構造函數拋出的異常都會被傳播。 ``` template <class U1,class U2,...,class UN> tuple(const tuple<U1,U2,...,UN>&); ``` 這個構造函數用來自另一個 tuple 的元素來進行初始化,要求被構造的 tuple (`T1`, `T2`,…,`TM`) 的每一個元素都必須可以從 (`U1`,`U2`,…,`UN`) 構造。任何從元素的構造函數拋出的異常都會被傳播。 ``` TIndex & get<int Index>(); const TIndex & get<int Index>() const; ``` 返回位于給定的 `Index` 處的元素的引用。`Index` 必須是一個常量整型表達式;如果索引大于或等于 `tuple` 中的元素數量,將產生一個編譯期錯誤。結果的類型通過相應的模板參數 `TIndex` 給出。 ``` tuple& operator=(const tuple& other); ``` tuple 的賦值要求兩個 tuples 具有相同的長度和元素類型。`*this` 中的每一個元素被賦值為 `other` 的對應元素。元素賦值中的任何異常都會被傳播。 ### 普通函數 ``` template<class T1,class T2,...,class TN> tuple<V1,V2,...,VN> make_tuple(const T1& t1,const T2& t2,...,const TN& tn); ``` 函數模板 `make_tuple` 是 `tuple` 版本的 `std::make_pair`. 它使用函數模板參數推斷來決定一個包含這些參數的 `tuple` 的元素類型。創建這個 `tuple` 的元素類型時不使用這些參數的高級 cv-限定符。要控制對引用類型的類型推斷,可以使用 Boost.Ref 的工具 `ref` 和 `cref` 來包裝這些參數,從而影響返回的 tuple 結果類型。(稍后我們將看到關于 `ref` 和 `cref` 的更多內容)? ``` template<class T1,class T2,...,class TN> tuple<T1&,T2&,...,TN> tie(T1& t1,T2& t2,...,TN& tn); ``` 函數模板 `tie` 類似于 `make_tuple`. 調用 `tie(t1,t2,...,tn)` 等同于調用 `make_tuple(ref(t1),ref(t2)... ref(tn))`,即它創建一個由函數參數的引用組成的 `tuple` 。實際結果是把一個 `tuple` 賦值為由 `tie` 創建的對象,拷貝源 `tuple` 的元素到 `tie` 的參數。這樣,`tie` 可以很容易地從一個由函數返回的 `tuple` 拷貝值到一個已有變量中。你也可以讓 `tie` 從一個 `std::pair` 創建一個 2-tuple 。 ``` template <int I,class T1,class T2,...,class TN> RI get(tuple<T1,T2,...,TN>& t); ``` 這個函數 `get` 的重載版本用于取出 `tuple t` 的一個元素。索引 `I` 必須位于范圍 [0..N),?N 為 `tuple` 中的元素數量。如果 `TI` 是一個引用類型,則`RI` 為 `TI`; 否則, `RI` 為 `TI&`. ``` template <int I,class T1,class T2,...,class TN> RI get(const tuple<T1,T2,...,TN>& t); ``` 這個函數 `get` 用于取出 `tuple t` 的一個元素。索引 `I` 必須位于范圍 [0..N),?N 為 `tuple` 中的元素數量。如果 `TI` 是一個引用類型,則`RI` 為 `TI`; 否則, `RI` 為 `const TI&`. ### 關系操作符 ``` bool operator==( const tuple<T1,T2,...,TN>& lhs, const tuple<U1,U2,...,UN>& rhs); ``` 如果對于所有位于范圍[0..N)的 `i`,都有 `get&lt;i&gt;(lhs)==get&lt;i&gt;(rhs)` ,N 為元素數量,則相等操作符返回 `true` 。這兩個 `tuple`s 必須具有相同數量的元素。對于 N=0 的空 `tuple` ,總是返回 `true` 。 ``` bool operator!=( const tuple<T1,T2,...,TN>& lhs, const tuple<U1,U2...,...,>& rhs); ``` 如果對于任意一個位于范圍[0..N)的 `i`,有 `get&lt;i&gt;(lhs)!=get&lt;i&gt;(rhs)` ,N 為元素數量,則不等操作符返回 `true` 。這兩個 `tuple`s 必須具有相同數量的元素。對于 N=0 的空 `tuple` ,總是返回 `false` 。 ``` bool operator<( const tuple<T1,T2,...,TN>& lhs, const tuple<U1,U2,...,UN>& rhs); ``` 如果對于任意一個位于范圍[0..N)的 `i`,有 `get&lt;i&gt;(lhs)&lt;get&lt;i&gt;(rhs)` ,N 為元素數量,則小于操作符返回 `true` ;假如對每個比較都返回 `false`,則表達式 `!(get&lt;i&gt;(rhs)&lt;get&lt;i&gt;(lhs))` 為 `true`;否則表達式為 `false`。這兩個 `tuple`s 必須具有相同數量的元素。對于 N=0 的空 `tuple` ,總是返回 `true` 。 值得注意的是,對于所有支持的關系操作符(operators `==`, `!=`, `&lt;`, `&gt;`, `&lt;=`, 和 `&gt;=`), 兩個 `tuple`s 必須有相同的約束。首先,它們必須有相同的長度。其次,兩個 `tuple` 間的每對元素(第一個對第一個,第二個對第二個,等等)必須支持同一個關系操作符。當這些約束被滿足時,`tuple` 的操作符才可以實現,它按順序比較每一對元素,即關系操作符是短路(short-circuited)的,一旦有了明確結果就馬上返回。操作符 `&lt;`, `&gt;`, `&lt;=`, 和 `&gt;=` 執行字典序的比較,并要求元素對執行同樣的操作。元素對的比較操作符產生的任何異常都會被傳播,但 `tuple` 操作符本身不拋出異常。
                  <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>

                              哎呀哎呀视频在线观看