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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

133:图的克隆

發布時間:2025/1/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 133:图的克隆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

133:圖的克隆

參考:

  • c++11 之emplace_back 與 push_back的區別:https://blog.csdn.net/p942005405/article/details/84764104
  • c++ map與unordered_map區別及使用:https://blog.csdn.net/qq_21997625/article/details/84672775
  • unordered_map:https://en.cppreference.com/w/cpp/container/unordered_map

題目詳解

  • 圖的克隆
    • 使用一個map 來表示已經訪問過的節點,如果已經訪問過,就直接返回
    • 沒有訪問過,則構造一個節點
      • 節點的val直接復制
      • 節點的neighbour使用emplace_back進行設置
class Solution { public:unordered_map<Node *,Node *> visited;Node* cloneGraph(Node* node) {if(node == nullptr){return node;} // 節點已經被遍歷到,那么就直接返回if(visited.find(node) != visited.end()){return visited[node];}Node * cloneNode = new Node(node->val);visited[node] = cloneNode;for(auto & neighbour : node->neighbors){cloneNode->neighbors.emplace_back(cloneGraph(neighbour));}return cloneNode;} };

1:Unordered__map

  • 引入了哈希表,使得查找的時候更加的方便

2:Auto

  • 申明變量的時候根據初始的表達式自動的推斷變量類型(必須有初始值)
  • 聲明函數時函數返回值的占位符
  • auto 不能和其他的類型一起使用
for(auto it = vect.begin(); it != vect.end(); it++){cin >> *it; }auto int i = 0 // 錯誤的

3:Emplace_back

  • 和push_back的區別
    • 在對右值引用進行操作的時候,我們會用構造函數構造成臨時對象,再通過拷貝構造函數將這個臨時對象放入到容器中,原來的臨時變量釋放。這樣就會造成臨時變量申請資源的浪費
  • emplace_back
    • 在容器的尾部添加一個元素,原地構造,不需要觸發拷貝構造和轉移構造

總結

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

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