STL常用演算法

2021-09-26 00:18:00 字數 3641 閱讀 5725

stl常用演算法:

(1)sort

sort(v.begin(),v.end());
(2)unique

auto end_unique = unique(begin(vec1), end(vec1));

// 去掉連續重複的元素。

vec1.erase(end_unique,vec1.end());

(3)string相關的操作

char c = 'a';  

string str(1, c);//乙個字元轉換成string

string str = to_string(i);//整型數轉換為string。

int i = stoi(str);//string轉換為整型值。  

str2.resize(str2.size()+d,'0');//通過resize將字串高位補d個零。

string str2 = str.substr(j,cnt);//構造字串:在str字串中從j位置開始的cnt個字元。

string(f,end(str));//構造字串:在str字串中從f位置開始到某個結束位置的所有字元。

bool fun(string s, unordered_set&dict)

}} // 判斷乙個字串是否包含另乙個子串(不一定是連續)

bool isequal(string str1, string str2)

if (j == sz2)

return true;

else

return false;} 

// erase函式有3種用法: 

// 刪除從pos開始的n個字元,比如erase(0,1)就是刪除第乙個字元 

str.erase(pos,n);

// 刪除pos處的乙個字元(pos是個string型別的迭代器) 

str.erase(pos);

// 刪除從first到last之間的字元(first和last都是迭代器) 

str.erase(first,last);

int index = str.find_first_not_of('0'); // 返回第乙個不為零的位置

// 字串分割:

// strin是輸入字串,delim是用來分割的字元,要包含標頭檔案regex

vectorsplit(const string& strin, const string& delim)

;    return vector;

}

(4)remove和erase移除元素

str.erase(remove(str.begin(), str.end(), '*'), str.end());
(5)序列反轉reverse

reverse(begin(str1), end(str1)); //字串反轉。
(6)序列交換swap

swap(str1, str2);//交換兩個字串。
(7)統計等於某值的容器元素個數count

listlst;

count(lst.begin(),lst.end(),value);

(8)條件統計count_if

count_if(vec.begin(),vec.end(),pred); // pred可以是函式也可以是lambda表示式
(9)查詢容器元素find

// 它用於查詢等於某值的元素。它在迭代器區間[first,last)(閉開區間)上查詢

// 等於value值的元素,如果迭代器i所指的元素滿足*i=value,

// 則返回迭代器i;未找到滿足條件的元素,返回last。

find( vec.begin(), vec.end(), num_to_find);

(10)條件查詢容器元素find_if

// 利用返回布林值的謂詞判斷pred,檢查迭代器區間[first,last)(閉開區間)上的每乙個元素,

// 如果迭代器i滿足pred(*i)=true,表示找到元素並返回迭代值i(找到的第乙個符合條件

// 的元素);未找到元素,返回末位置last。

find_if(vec.begin(), vec.end(), pred);

(11)子串行搜尋search

// 在[first1,last2)中查詢[frist2,last2)中序列,如果找到了就在[first1,last1)中

// 返回first1的迭代器物件,如果沒有找到就返回last1。

iter = search(vec1.begin(), vec1.end(), vec2.begin(), vec2.end());

(12)最後乙個子串行搜尋find_end

// 在乙個指定的元素序列裡查詢另一指定子串行最後一次出現的位置。

iter = find_end(vec1.begin(), vec1.end(), vec2.begin(), vec2.end());

(13)元素複製copy

// 將vec1中的元素複製到vec2中。

copy(vec1.begin(), vec1.end(),vec2.begin());

(14)元素變換transform

// 按某種方案將vec1中的元素複製到vec2中。

copy(vec1.begin(), vec1.end(),vec2.begin(), square);

(15)替換replace

// 用str替換 迭代器起始位置 到 結束位置 的字元 

// 將line從begin位置開始的6個字元替換成1

line=line.replace(line.begin(), line.begin()+6, "1");

// 用str替換指定字串從起始位置pos開始長度為len的字元

// 將line中的第乙個&替換成1

line=line.replace(line.find("&"), 1, "1");

(16)條件替換replace_if

// 把vector中所有奇數替換為0

replace_if (vec.begin(), vec.end(), isodd, 0);

(17)n次填充fill_n

// 在vec.begin的後面插入5個0。

fill_n(vec.begin(), 5, 0);

(18)隨機生成n個元素generate

// 在vec.begin的後面插入5個10以內的隨機數。

generate_n(vec.begin(), 5, ());

(20)條件移除remove_if

// 返回值相當於移除滿足條件的元素後形成的新向量的end()值。

remove_if(vec.begin(), vec.end(), pred);

STL常用演算法

include include include include include include include include 一些算術演算法中需要stl中常用的遍歷演算法 for each,transform void show int n int show1 int n int main stl...

STL 常用演算法

概述 學習目標 演算法簡介 5.1.1 for each 功能描述 函式原型 普通函式 void print01 int val 函式物件 class print02 遍歷演算法 for each v.begin v.end print01 cout endl for each v.begin v....

STL常用數值演算法

include include include include include include includeusing namespace std 數值演算法 accumulate 累加或者類乘 partial sum 區域性求和 fill fill n 填充 初始化時使用方便 equal判斷兩區...