<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前言:
我們都是帶著問題學習,假設一個任務,也可以理解為一個問題,通過找解決方案來提升自己 c++ 的程式設計能力,嘗試這是否一條好的路線,希望找到這種學習方式有效
問題簡單描述一下,就是從以字串,課程名稱組成的集合中將一些包含特定文字,將其從列表中刪除
#include<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::at()
vector::operator[]
兩者的區別在於
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; }
使用 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 的使用方法的文章就介紹到這了,更多相關C++ 容器Vector內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45