国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

企業(yè)做的網(wǎng)站推廣方案的步驟深圳網(wǎng)站建設哪家好

企業(yè)做的網(wǎng)站推廣方案的步驟,深圳網(wǎng)站建設哪家好,查詢網(wǎng)站死鏈接,專業(yè)做ea的網(wǎng)站每日一題 200. 島嶼數(shù)量 class Solution {//使用深度的優(yōu)先搜索來搜索島嶼圖//遍歷整個圖片 當char數(shù)組的值為1時開始從這個點開始往外擴散搜索//注意處理邊界 圖不是正方形 public:int ans;int d[4][2] {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};int N;int M;void dfs(vector<…

每日一題

200. 島嶼數(shù)量

class Solution
{//使用深度的優(yōu)先搜索來搜索島嶼圖//遍歷整個圖片 當char數(shù)組的值為1時開始從這個點開始往外擴散搜索//注意處理邊界 圖不是正方形
public:int ans;int d[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};int N;int M;void dfs(vector<vector<char>> &grid, vector<vector<int>> &vis, int i, int j){for (int k = 0; k < 4; k++){int nx = i + d[k][0];int ny = j + d[k][1];if (nx < 0 || nx > N - 1 || ny < 0 || ny > M - 1)continue;if (!vis[nx][ny]&& grid[nx][ny] != '0'){vis[nx][ny] = 1;dfs(grid, vis, nx, ny);}}}int numIslands(vector<vector<char>> &grid){ans = 0;N = grid.size();M = grid[0].size();vector<vector<int>> vis(N, vector<int>(M, 0));for (int i = 0; i < N; i++){for (int j = 0; j < M; j++){if (!vis[i][j] && grid[i][j] != '0'){ans++;vis[i][j] = 1;dfs(grid, vis, i, j);}}}return ans;}
};

C++11新特性

自動類型推導(auto 和 decltype):

????????在C++中,自動類型推導是通過autodecltype來實現(xiàn)的。這些關鍵字讓程序員能夠在不顯式指定類型的情況下,依賴編譯器自動推導出變量的類型

auto:

  • auto關鍵字用于自動推導變量的類型。編譯器根據(jù)初始化表達式的類型來推導變量的類型。
  • 它使得代碼更加簡潔,尤其是在聲明復雜類型(如迭代器或lambda表達式)時非常有用。
  • 使用示例:
  • auto x = 42; // x的類型是int
    auto y = 3.14; // y的類型是double
    auto ptr = new int(10); // ptr的類型是int*
    

decltype:

  • decltype關鍵字用于推導一個表達式的類型,但與auto不同的是,decltype是在編譯時對表達式類型的靜態(tài)分析,返回的是表達式的實際類型。
  • 它常用于模板編程,或者當你想要獲得某個表達式類型但又不確定時非常有用。
  • 使用示例:
  • int x = 42;
    decltype(x) y = 10; // y的類型是int,與x相同
    

右值引用和移動語義:

????????右值引用和移動語義是C++11引入的重要特性,用來優(yōu)化資源管理,尤其是在處理動態(tài)分配內(nèi)存、數(shù)組、容器等時,避免不必要的深拷貝。

右值引用:

  • 右值引用是通過&&符號表示的,允許我們綁定到右值(臨時對象、即將銷毀的對象)上。

  • 在傳統(tǒng)的C++中,右值只能綁定到常量或臨時變量,但通過右值引用,程序員可以顯式地“轉(zhuǎn)移”對象的所有權。

  • 右值引用通常與移動語義一起使用,使得對象的資源(如內(nèi)存、文件句柄等)能夠從一個對象轉(zhuǎn)移到另一個對象,而不是進行深拷貝。

  • 使用示例:

  • int&& r = 10; // r是右值引用,綁定到臨時值10
    

移動語義:

  • 移動語義允許對象的資源(如內(nèi)存或文件句柄)在不進行深拷貝的情況下,從一個對象“移動”到另一個對象。

  • 通過實現(xiàn)移動構造函數(shù)和移動賦值運算符,C++能夠通過右值引用有效地轉(zhuǎn)移資源而不是復制。

  • 在標準庫容器(如std::vector、std::string)中,移動語義顯著提高了性能,因為容器可以直接將元素從一個容器轉(zhuǎn)移到另一個容器,而不需要復制每個元素。

  • 使用示例:

  • class MyClass {
    public:MyClass(int size) : data(new int[size]) {}~MyClass() { delete[] data; }// 移動構造函數(shù)MyClass(MyClass&& other) noexcept : data(other.data) {other.data = nullptr;}// 移動賦值運算符MyClass& operator=(MyClass&& other) noexcept {if (this != &other) {delete[] data;data = other.data;other.data = nullptr;}return *this;}private:int* data;
    };
    

詳解等于號運算符重載實現(xiàn)移動語義?

MyClass& operator=(MyClass&& other) noexcept {if (this != &other) {delete[] data;            // 1data = other.data;        // 2other.data = nullptr;     // 3}return *this;                 // 4
}

1. if (this != &other)

這行代碼用來確保我們沒有將一個對象賦值給它自己。我們需要避免以下的情況:

obj1 = std::move(obj1);  // 這樣就會發(fā)生自賦值

如果this&other是相同的(即它們指向的是同一個對象),那么在移動操作時會導致對象的資源被錯誤地釋放,最終使得對象處于不一致的狀態(tài)。因此,首先通過這個條件判斷來確保移動賦值操作不會出現(xiàn)自賦值的情況。

2. delete[] data;

這行代碼釋放當前對象的資源,尤其是類中的動態(tài)分配內(nèi)存(data指針指向的內(nèi)存)。在進行移動賦值操作時,我們必須釋放當前對象的資源,以便為從other對象“移動”資源做好準備。

為什么要釋放資源?

在“移動”資源之前,我們需要確保當前對象沒有持有相同的資源。假設data指向動態(tài)分配的內(nèi)存,在data = other.data;之后,dataother.data指向同一塊內(nèi)存。如果不釋放原有的內(nèi)存,就會導致內(nèi)存泄漏,因為對象thisother都持有相同的資源指針,但other指針的析構時會釋放這塊內(nèi)存,導致this的指針懸掛,出現(xiàn)不一致的行為。

3. data = other.data;

這行代碼將other對象的data指針賦給當前對象data,實現(xiàn)資源的“轉(zhuǎn)移”。也就是說,我們把other對象所管理的內(nèi)存(資源)轉(zhuǎn)移到當前對象this上。other.data指向原來的內(nèi)存塊,而this->data也指向同一塊內(nèi)存塊。

此時,this對象就擁有了other對象的資源,other對象中的data指針指向了同樣的內(nèi)存,而other對象的資源將不再有效。

4. other.data = nullptr;

在這行代碼中,我們將other.data指針置為nullptr。這是為了確保other對象在析構時不會試圖釋放資源。由于我們已經(jīng)將other對象的資源轉(zhuǎn)移給了thisother對象不再擁有該資源,因此將other.data置為nullptr可以防止其析構時錯誤地刪除內(nèi)存。

這一步是移動操作的核心,確保在移動后,other對象不會誤操作原本應該由this對象管理的內(nèi)存,避免多次釋放同一塊內(nèi)存。

5. return *this;

最后,返回*this,即當前對象的引用。這是符合賦值運算符規(guī)范的做法,返回*this允許鏈式賦值操作,例如:

a = b = c;

這里a = b = c;首先執(zhí)行b = c;,然后執(zhí)行a = b;,每次都會返回賦值后的對象,以便進行下一次賦值。

為什么使用noexcept

noexcept關鍵字表示這個移動賦值運算符不拋出任何異常。移動操作通常不需要動態(tài)分配內(nèi)存或者執(zhí)行復雜的操作,因此它應該是一個不會拋出異常的操作。如果移動賦值操作拋出異常,則會破壞對象狀態(tài)的一致性,并導致潛在的問題。

http://aloenet.com.cn/news/43855.html

相關文章:

  • 公司網(wǎng)站建設需要什么資質(zhì)購物網(wǎng)站頁面設計
  • 怎么選擇一家好的網(wǎng)站建設公司360優(yōu)化大師
  • 網(wǎng)站制作哪家專業(yè)微商怎么找客源人脈
  • 公司企業(yè)網(wǎng)站免費建設網(wǎng)絡營銷促銷方案
  • 做極速賽車網(wǎng)站公眾號推廣
  • 在百度網(wǎng)站備案查詢上顯示未備案是什么意思網(wǎng)頁設計素材
  • 所有政府網(wǎng)站必須做等保嗎sem運營是什么意思
  • 政務服務 網(wǎng)站 建設方案朋友圈推廣平臺
  • 網(wǎng)站收錄低的原因百度云網(wǎng)頁版登錄入口
  • 住房城鄉(xiāng)建設部辦公廳網(wǎng)站口碑營銷公司
  • 番禺區(qū)網(wǎng)站設計線上推廣的方式有哪些
  • 關于做美食的小視頻網(wǎng)站晚上免費b站軟件
  • 石家莊個人誰做網(wǎng)站廈門百度關鍵詞推廣
  • 網(wǎng)站優(yōu)化怎樣做網(wǎng)絡營銷整合推廣
  • 個人工作室可以做哪些項目win優(yōu)化大師怎么樣
  • 北京網(wǎng)站建設招聘網(wǎng)站域名查詢系統(tǒng)
  • wordpress 刪除略縮圖關鍵詞seo優(yōu)化公司
  • 做旅游銷售網(wǎng)站平臺ppt模板網(wǎng)頁設計的流程
  • 網(wǎng)站頁面小圖標怎么做深圳優(yōu)化公司排名
  • 晾衣架 東莞網(wǎng)站建設百度一下點擊搜索
  • 關于優(yōu)化網(wǎng)站建設的方案怎么可以在百度發(fā)布信息
  • 泰州網(wǎng)站制作案例上海專業(yè)做網(wǎng)站
  • 有必要自建網(wǎng)站做導購嗎怎么給自己的網(wǎng)站設置關鍵詞
  • 陶瓷網(wǎng)站模板下載新浪體育最新消息
  • 怎樣推廣網(wǎng)站網(wǎng)絡廣告營銷
  • 動態(tài)網(wǎng)站開發(fā)教程seo怎么刷排名
  • 網(wǎng)站用wordpress還是wp網(wǎng)址大全瀏覽器
  • 中國建設銀行網(wǎng)站濟南網(wǎng)點品牌軟文
  • 怎么在電腦上自己做網(wǎng)站如何做網(wǎng)站推廣的策略
  • 美發(fā)網(wǎng)站怎么做商品關鍵詞舉例