太極1:STL:vector和string
STL:
什麼是STL?
STL是C++中標準模板庫------------standard template library
實際上STL就是對常見資料結構(線性表(順序表、連結串列)+棧和堆列+二叉樹+雜湊)以模板的方式進行了封裝
目的:替使用者組織資料
裡面和增加了一些非常靈活和通用的演算法----->主要是對資料進行操作的sort/reverse
------------------------------分界線-------------------------------------
STL對常見的資料結構的封裝(模板類)
序列式容器(線性資料結構):
string:專門用來管理字串的動態動態型別的順序表
vector:管理任意型別的動態型別順序表
list:帶頭結點迴圈雙向連結串列
deque:雙端佇列-----類似於動態的二維陣列
關鍵式容器:----<k,v>
底層為紅黑樹結構
map
set
multimap
multiset
底層為雜湊結構
unordered_map
unordered_set
unordered_multimap
unordered_multisset
**迭代器**
概念:提供一個結構,可以依次遍歷容器中的元素,而又無需暴露容器的底層實現原理
作用:主要是給演算法來應用的,讓演算法可以操作任意容器中的資料
本職:就是一個指標||對指標進行分裝
----------------------------------------分界線--------------------------
演算法:解決問題的步驟
分類:1.與資料結構相關聯的演算法:就是容器中的成員函式
2.通用演算法:sort/reverse/foreach…
注意:演算法要操作不同容器中的資料,必須要藉助迭代器
仿函式/函式物件:
概念:可以像函式一樣使用的物件
實現:只需在該類中將()函式呼叫運算子過載即可
作用:用來配置演算法的功能,使演算法更加的靈活
介面卡:是一種設計模式
概念:將其他結構進行封裝然後形成一種新的結構
容器介面卡:stack/queue/priority queue
迭代器介面卡:反向迭代器------其內部就是對正向迭代器進行封裝
函式介面卡
空間配置器(記憶體池):高效為STL中各個容器申請和釋放空間,以及對空間進行管理
-------------------------------------分界線-----------------------------
string:
C語言中實際沒有專門的字串型別
string的常用介面:
構造和析構:
string():構造一個空字串
string(size_t,char ch):用n個字串ch構造一個string型別的物件
string(char* str):用C格式的字串構造string物件
string(const string& s):拷貝構造
迭代器:
begin()/end()
容量:
size_t size()/length(): 返回有效元素的個數
size_t capacity():返回底層空間的總大小
bool empty():檢測該字串是否為空串------->是:true ,否:false
void resize(size_t newsize,char ch=char());
部分操作:
字串變數字:
string s(“1234”); int i=aoti(s.c_str());
cout<<i<<endl; 列印出來1234
查詢:
string s(“iloveyou”);
int i = s.find(“lov”);
cout << i << endl;
擷取一段字串:
string s(“iloveyou”);
string s1=s.substr(2, 5);
cout<<s1<<endl;
------------------------------------分界線------------------------------
vector:
1.底層結構:
動態型別的順序表,可以存放任意型別的元素
2.常用介面:
構造和析構
vector():構造一個空的vector
vector(size_t n,const T& data=T());用n個值為data的元素構造vector
vector(first,last):用(first,last)區間中的元素構造vector
vector(const vector&):拷貝建構函式
3.迭代器:
begin()/end();
4.容量:
size_t size();返回有效的元素
size_t capacity():返回空間的總大小
bool empty(); 檢測vector是否為空,是:true 否:false
5.訪問:
1.固定兩端訪問:
front() 返回第一個元素的引用
back() 返回最後一個元素的引用
6.修改:
void push_back(const T& data) 尾插
void pop_back(): 尾刪
任意位置插入:
iterator insert(iterator pos,const T& data)
iterator insert(iterator pos,size_t n,const T& data)
iterator insert(iterator pos,iterator first,iterator last);
任意位置的刪除:
iterator erase(iterator pos);
iterator erase(iterator first,iteator last);
將vector中的有效元素清空:
void clear();
交換:
void swap(vector& v);
相關文章
- STL容器---Vector
- C++ STL -- vectorC++
- STL---vector(向量)
- STL使用篇__vector
- 初探STL容器之Vector
- STL:vector用法總結
- C++ 學習筆記(1):STL、Vector 與 SetC++筆記
- 太極1:繼承和多型2繼承多型
- 最詳細STL(一)vector
- STL原始碼剖析——vector容器原始碼
- STL-Vector容量問題:
- STL----vector注意事項
- STL_string容器
- C++STL第二篇(vector的原理用法)C++
- 3. 入門並實踐STL——string篇
- STL.vector容器刪除單個元素、部分元素、全部元素
- C++STL之Vector向量詳解,用法和例子 一起學習 一起加油C++
- Vector和Stack
- CSS 之 太極圖CSS
- 大一寒假集訓(13)(14)---vector ,string【未完待續】
- Failed to execute user defined function(anonfun$concatStr$1: (map<string,string>, string) => string)AIFunction
- C++STL學習第一篇(什麼是STL以及string的各種功能用法)C++
- STL_map和multimap容器
- STL的map使用和分析
- 自定義View合輯(4)-太極View
- Perceptron, Support Vector Machine and Dual Optimization Problem (1)Mac
- map和set對vector排序排序
- C++【vector】用法和例子C++
- String s = “hello“和String s = new String(“hello“)的區別
- 鴻蒙NEXT自定義元件:太極Loading鴻蒙元件
- 太極越獄重大安全後門
- std::vector 和 std::list 區別
- java 常用類-String-1Java
- stl 和 數學slide 筆記 by JeefyIDE筆記
- STL
- Set<String>和JTextField
- String、StringBuilder和StringBufferUI
- HTML+CSS實現太極旋轉效果HTMLCSS