日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

std::tie详解

發布時間:2024/3/12 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 std::tie详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

std::tie:創建左值引用的?tuple,或將 tuple 解包為獨立對象

返回值

含左值引用的?std::tuple?對象。

注意

std::tie?可用于解包?std::pair?,因為?std::tuple?擁有從 pair 的轉換賦值:

示例

std::tie?能用于引入字典序比較到結構體,或解包 tuple :

#include <iostream> #include <string> #include <set> #include <tuple>struct S {int n;std::string s;float d;bool operator<(const S& rhs) const{// 比較 n 與 rhs.n,// 然后為 s 與 rhs.s,// 然后為 d 與 rhs.dreturn std::tie(n, s, d) < std::tie(rhs.n, rhs.s, rhs.d);} };int main() {std::set<S> set_of_s; // S 為可比較小于 (LessThanComparable)S value{42, "Test", 3.14};std::set<S>::iterator iter;bool inserted;// 解包 insert 的返回值為 iter 與 insertedstd::tie(iter, inserted) = set_of_s.insert(value);if (inserted)std::cout << "Value was inserted successfully\n"; }

結果如下:

Value was inserted successfully

std::tie會將變量的引用整合成一個tuple,從而實現批量賦值。

int i; double d; string s;tie(i, d, s) = t3;cout << i << " " << d << " " << s << endl;

會輸出4 2 3

如下例子摘自http://www.cplusplus.com/reference/tuple/tie/

// packing/unpacking tuples #include <iostream> // std::cout #include <tuple> // std::tuple, std::make_tuple, std::tieint main () {int myint;char mychar;std::tuple<int,float,char> mytuple;mytuple = std::make_tuple (10, 2.6, 'a'); // packing values into tuplestd::tie (myint, std::ignore, mychar) = mytuple; // unpacking tuple into variablesstd::cout << "myint contains: " << myint << '\n';std::cout << "mychar contains: " << mychar << '\n';return 0; }

輸出:

myint contains: 10 mychar contains: a

std::ignore介紹:

任何值均可賦給而無效果的未指定類型的對象。目的是令?std::tie?在解包?std::tuple?時作為不使用的參數的占位符使用。

示例

解包 set.insert() 所返回的 pair ,但只保存布爾值。

#include <iostream> #include <string> #include <set> #include <tuple>int main() {std::set<std::string> set_of_str;bool inserted = false;std::tie(std::ignore, inserted) = set_of_str.insert("Test");if (inserted) {std::cout << "Value was inserted successfully\n";} }

結果如下:?

Value was inserted successfully

?

總結

以上是生活随笔為你收集整理的std::tie详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。