91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++容器Vector如何使用

發布時間:2022-06-06 09:27:22 來源:億速云 閱讀:163 作者:iii 欄目:開發技術

今天小編給大家分享一下C++容器Vector如何使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Vector簡介

  • Vector 是一個能夠存放任意類型的動態數組,有點類似數組,是一個連續地址空間,

Vector 與數組

  • Vector 是支持動態空間大小調整

  • 數組往往在定義需要指定固定大小

#include<vector>

要使用 vector 需要引入一下其頭文件

創建 vector 的各種方法

  • 創建一個 T 類型的空 vector

  • 創建時可以指定容量大小

  • 創建時不但可以指定容量大小,還可以指定元素初始值

  • 創建一個基于已有 vector 的拷貝

  • 基于數組來創建 vector

vector<int> v1;
vector<int> v2(5);
vector<int> v3(5, 0);
vector<int> copyOf(v3);
int arr[] = { 1,2,3,5,7,9 };
vector<int> v5(arr, arr + 6);
	v5.push_back(11);

向一個 vector 中添加元素

	bool isEmpty = v1.empty();

訪問 vector 的元素

  • 調用 vector::at()

  • 調用 vector::operator[]

兩者的區別在于

  • operator[] 提供類似數組的存取方式,但不做邊界是否越界檢查,訪問效率高

  • at() 進行邊界檢查,訪問越界則拋出 exception 效率不容 operator[],這樣開銷比較大,因為我們用 c++ 主要還是要考慮到效率

vector<wstring> v;
v.reserve(10);

for (size_t i = 0; i < 3; i++) {
        wstringstream wss;
        wss << "[" << i << "]" << endl;
        v.push_back(wss.str());
}
try
{
        wstring wsz = v.at(5);
}
catch (const std::exception& ex)
{
        cout << ex.what() << endl;
}

刪除元素

  • clear 清除整個 vector

  • pop_back:彈出 vector 末尾元素

  • erase: 刪除 vector 中某一位置的元素

使用 erase 來刪除某一個位置元素,可以指定 iterator 來刪除某一個元素,也可以通過條件函數找到 vector 中需要刪除的元素,這里 remove_if 為例說明

vector<string> tuts;
tuts.push_back("machine learning basic tutorial");
tuts.push_back("deep learning basic tutorial");
tuts.push_back("transformer tutorial");

for (int i = 0; i < tuts.size(); i++) {
        cout << tuts[i] << endl;
}

首先我們需要集合來承載這些字符串,這里我選擇了 vector 作為容器,這樣就得到了一個集合 tuts

vector<string> tuts;
tuts.push_back( "machine learning basic tutorial" );
tuts.push_back("deep learning basic tutorial");
tuts.push_back("transformer tutorial");

for (int i = 0; i < tuts.size(); i++) {
    cout << tuts[i] << endl;
    string::size_type idx;
    idx = tuts[i].find("basic tutorial");

    if (idx == string::npos) {

            cout << "Not Found" << endl;
    }
    else {
            cout << "Found" << endl;
    }
}

這里定義這個函數 isContainsBasicTut ,這個代碼是不是讓大家聯想到 map,這個函數通常會接受一個數組元素做輸入,返回一個 bool 類型值,滿足一定條件返回 true

bool isContainsBasicTut(string tutName) {
	string::size_type idx;
	idx = tutName.find("basic tutorial");
	if (idx == string::npos) {

		return false;
	}
	else {
		return true;
	}
}

然后可以調用 tuts 的 erase 也就是 vector 的刪除方法,這里 remove_if 方法并不會實際移除序列中的元素,只是將符合條件元素移動到容器末尾并返回指向第一個移除元素的位置的迭代器,接下來 erase 對 vector 容器中根據 remove_if 提供的信息來對元素進行清除。

vector<string> tuts;
tuts.push_back( "machine learning basic tutorial" );
tuts.push_back("deep learning basic tutorial");
tuts.push_back("transformer tutorial");

tuts.erase( remove_if(tuts.begin(), tuts.end(), isContainsBasicTut), tuts.end());

for (int i = 0; i < tuts.size(); i++) {
        cout << tuts[i] << endl;
}

接下來我們再通過一例子來看在實際開發中如何使用 if_remove

bool isOdd(int num) {
    return ((num % 2) == 1);
}

int main()
{
    vector<int> nums{ 1, 2, 3, 10, 12, 15, 17, 20 };
    remove_if(nums.begin(), nums.end(), isOdd);
    for (vector<int>::iterator it = nums.begin(); it != nums.end(); it++)
            cout << *it << "\t";

    return 0;
}

以上就是“C++容器Vector如何使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金坛市| 育儿| 奉节县| 铅山县| 襄城县| 新野县| 息烽县| 海安县| 东兰县| 西平县| 诸城市| 辽宁省| 白玉县| 沁源县| 奎屯市| 青铜峡市| 南安市| 通榆县| 上饶市| 余姚市| 南溪县| 浏阳市| 凤山县| 镇雄县| 柘荣县| 开封县| 永川市| 台安县| 大名县| 宜兰市| 丹寨县| 雷山县| 会同县| 沂南县| 平舆县| 房产| 宣化县| 永吉县| 从化市| 图木舒克市| 共和县|