1. 程式人生 > >stl的常見函式

stl的常見函式

  整理自《ACM程式設計》  

  迭代器(iterator)

  個人理解就是把所有和迭代有關的東西給抽象出來的,不管是陣列的下標,指標,for裡面的、list裡面的、vector裡面的,抽象一下變成了iterator

複製程式碼
 1 #include <iostream>
 2 #include <vector>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     vector<int> v;
 9     for(int i = 0; i < 10; ++i )
10 { 11 v.push_back(i); 12 } 13 for(vector<int>::iterator it = v.begin(); it != v.end(); ++it) 14 { 15 cout << *it << " "; 16 } 17 cout << endl; 18 return 0; 19 }
複製程式碼

  求和(<numeric> accumulate)

  accumulate(v.begin(),v.end(),0),把從 v.begin() 開始到 v.end()結束所有的元素加到 0上面去

複製程式碼
 1 #include <iostream>
 2 #include <vector>
 3 #include <numeric>
 4 
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     vector<int> v;
10     for(int i = 0; i < 10; ++i )
11     {
12         v.push_back(i);
13     }
14     for(vector<int>::iterator it = v.begin(); it != v.end(); ++it)
15 { 16 cout << *it << " "; 17 } 18 cout << endl; 19 cout << accumulate(v.begin(),v.end(),0) << endl; 20 return 0; 21 }
複製程式碼

  vector(動態陣列)

  vector有記憶體管理的機制,也就是說對於插入和刪除,vector可以動態調整所佔用的記憶體空間。

  vector相關函式

複製程式碼
 1 #include <iostream>
 2 #include <vector>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     vector<int> v;
 9     v.push_back(3);  //陣列尾部插入3
10     v.push_back(2);
11     v.push_back(1);
12     v.push_back(0);
13     cout << " 下標 " << v[3] << endl;
14     cout << " 迭代器 " << endl;
15     for(vector<int>::iterator i = v.begin();i!= v.end();++i)
16     {
17         cout << *i << " ";
18     }
19     cout << endl;
20     //在第一個元素之前插入111  insert begin+n是在第n個元素之前插入
21     v.insert(v.begin(),111);
22     //在最後一個元素之後插入222 insert end + n 是在n個元素之後插入
23     v.insert(v.end(),222);
24 
25     for(vector<int>::iterator i = v.begin();i!= v.end();++i)
26     {
27         cout << *i << " ";
28     }
29     cout << endl;
30 
31     vector<int> arr(10);
32     for(int i = 0; i < 10; i++)
33     {
34         arr[i] = i;
35     }
36     for(vector<int>::iterator i = arr.begin();i!= arr.end();++i)
37     {
38         cout << *i << " ";
39     }
40     cout << endl;
41 
42     //刪除 同insert
43     arr.erase(arr.begin());
44 
45     for(vector<int>::iterator i = arr.begin();i!= arr.end();++i)
46      {
47         cout << *i << " " ;
48      }
49     cout << endl ;
50 
51     arr.erase(arr.begin(),arr.begin()+5);
52 
53     for(vector<int>::iterator i = arr.begin();i!= arr.end();++i)
54     {
55         cout << *i << " " ;
56     }
57     cout << endl ;
58     return 0 ;
59  }
複製程式碼


  陣列轉置 (<algorithm> reverse)

  reverse(v.begin(),v.end())

複製程式碼
 1 #include<iostream>
 2 #include<vector>
 3 #include<algorithm>
 4 
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     vector<int> v;
10     for(int i = 0; i < 10; ++i)
11     {
12         v.push_back(i);
13     }
14     for(vector<int>::iterator it = v.begin(); it != v.end(); ++it)
15     {
16         cout << *it << " ";
17     }
18     cout << endl;
19 
20     reverse(v.begin(),v.end());
21 
22 
23     for(vector<int>::iterator it = v.begin(); it != v.end(); ++it)
24     {
25         cout << *it << " ";
26     }
27     cout << endl;
28     return 0;
29 }
複製程式碼

  排序(<algorithm> sort)

  sort(v.begin(),v.end())

複製程式碼
 1 #include<iostream>
 2 #include<vector>
 3 #include<algorithm>
 4 
 5 using namespace std;
 6 
 7 bool Comp(const int &a,const int &b)
 8 {
 9     return a>b;
10 }
11 
12 int main()
13 {
14     vector<int> v;
15     v.push_back(1);
16     v.push_back(3);
17     v.push_back(2);
18     v.push_back(55);
19     v.push_back(-1);
20     v.push_back(0);
21     v.push_back(2);
22     v.push_back(3);
23     v.push_back(4);
24 
25     for(vector<int>::iterator it = v.begin(); it != v.end(); ++it)
26     {
27         cout << *it << " ";
28     }
29     cout << endl;
30 
31     //預設升序
32     sort(v.begin(),v.end());
33 
34 
35     for(vector<int>::iterator it = v.begin(); it != v.end(); ++it)
36     {
37         cout << *it << " ";
38     }
39     cout << endl;
40 
41     //用降序 需要自定義一個降序函式
42     sort(v.begin(),v.end(),Comp);
43 
44 
45     for(vector<int>::iterator it = v.begin(); it != v.end(); ++it)
46     {
47         cout << *it << " ";
48     }
49     cout << endl;
50 
51     return 0;
52 }
複製程式碼

  字串(<string>)

  輸入

複製程式碼
 1 #include<iostream>
 2 #include<string>
 3 #include<cstdio>
 4 
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     string s1;
10     s1 = "hello";
11 
12     string s2;
13     char s[1024];
14     //scanf 輸入速度比cin快的多
15     //scanf 是C函式,不可以輸入string
16     scanf("%s",s);
17     s2 = s;
18 
19     cout << s1 << endl;
20     cout << s2 << endl;
21 
22     return 0;
23 }
複製程式碼

  尾部新增字元字串直接用+號 例如: s += 'a'; s += "abc",或者使用append方法,s.append(“123”)

  刪除 (erase clear)

  s.erase(it + 1,it + 4); clear()

複製程式碼
 1 #include<iostream>
 2 #include<string>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     string s;
 9     s = "0123456789";
10     cout << s << endl;
11 
12     string::iterator it = s.begin();
13 
14     //刪除s[3]
15     s.erase(it+3);
16     cout << s << endl;
17 
18     //刪除s[1]~s[3]
19     s = "0123456789";
20     s.erase(it + 1,it + 4);
21     cout << s << endl;
22 
23     //全部刪除
24     s.clear();
25     cout << "clear : " << s << endl;
26 
27     return 0;
28 }
複製程式碼

  查詢(find)

  用find找到string裡面第一個要找到元素(char或者串),找到返回陣列下標,找不到返回end()迭代器

  string和vector有很多相同的東西,比如length(),size(),empty(),reverse(),相對也容易,就不一一說了。

  數字化處理(string)

  經常會遇到這樣一種情況,有一個數字,需要把每一位給提取出來,如果用取餘數的方法,花費的時間就會很長,所以可以當成字串來處理,方便、省時。

  例子:求一個整數各位數的和

複製程式碼
 1 #include<iostream>
 2 #include<string>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     string s;
 9     s = "123456789";
10     int sum = 0;
11     for(int i = 0; i < s.size(); ++i)
12     {
13         switch(s[i])
14         {

            
           

相關推薦

stl常見函式

  整理自《ACM程式設計》     迭代器(iterator)   個人理解就是把所有和迭代有關的東西給抽象出來的,不管是陣列的下標,指標,for裡面的、list裡面的、v

2字串常見函式操作

字串常見函式操作 find() 例:my_str = "hello world" my_str.find("world") 為6,world的首字元下標 rfind 從右邊開始找 找不到則返回-1   index同find,但找不到則報錯

matlab常見函式總彙(不定時更新)

1magic()隨機矩陣生成 2.eye(n)輸出n階單位方陣 3.rand(a,b)隨機矩陣 4.linspace(a,b,n)線性等分,a、b為等差數列的初值和終值,n是節點數 5.logspace(as,bf,n)等比數列 6.size(a)查驗矩陣維數 7.length(a)查驗向量

STL常見容器區別

小結 在實際使用過程中,到底選擇這幾種容器中的哪一個,應該根據遵循以下原則: 1、如果需要高效的隨機存取,不在乎插入和刪除的效率,使用vector; 2、如果需要大量的插入和刪除元素,不關心隨機存取的效率,使用list; 3、如果需要隨機存取,並且關心兩端資料的插入和刪除

STL常見容器總結

1:關聯容器和順序容器   c++中有兩種型別的容器:順序容器和關聯容器,順序容器主要有:vector、list、deque等。其中vector表示一段連續的記憶體地址,基於陣列的實現,list表示非連續的記憶體,基於連結串列實現。deque與vector類似,但是對於首元素提供刪除和插入的雙向

loadrunner錄製指令碼和常見函式

一、如何錄製指令碼 1.建立指令碼   2.選擇常用協議     3.Start Record 開始錄製 (1)Application type 應用型別:瀏覽器、客戶端 (2)Program to record :預設為IE

Hive常見函式

1.檢視函式 檢視hive所有的函式 show functions; 檢視函式資訊 desc function 函式名; 檢視函式詳細資訊 desc function extended 函式名; 2.時間函式 顯示當前日期 示例

C++學習筆記——關於STL sort()函式的第三個引數問題

STL    sort()函式有三個引數的過載型別 template<class RandomAccessIterator, class Predicate> void sort( RandomAccessIterator first,

pytorch 常見函式理解

gather >>> a = torch.Tensor([[1,2],[3,4]]) >>> a tensor([[ 1., 2.], [ 3., 4.]]) >>> torch.gather(a,1,torch.LongTen

STL仿函式簡單總結

C++相對於C語言來說,有兩個重點,1.面向物件特性;2.函式模板/泛型程式設計。對於STL中的6大元件:容器/演算法/迭代器/仿函式/介面卡/空間配置器。仿函式的用法比較多樣化,下面簡單總結一下。 使用: _OutIt copy_if(_InIt _First, _InIt

MySQL常見函式

  MySQL常見函式 函式: 將某些功能封裝到一起,對外提供到一個介面(函式名),通過函式呼叫的方式可以重複的執行函式裡的功能程式碼從而提高我們的程式碼的複用性 MySql裡自帶了很多已經封裝好了的函式,可以幫我們實現很多功能, MySql裡呼叫函式使用函式名(),完整的

LoadRunner效能測試之常見函式及引數的說明和作用

lrs_startup(257);  啟動winsocket.dll lrs_create_socket("socket0","TCP","RemoteHost=10.1.106.6:20000",LrsLastArg);   建立socket函式。引數分別是:soc

python中 雜湊表應用,常見函式 MD5和SHA2演算法

通過雜湊函式計算資料儲存 insert(key, value) 插入鍵值對 get(key) 獲取值 delete(key) 刪除值 常見雜湊函式 除法雜湊:h(k) = k % m 乘法雜湊:h(k) = floor(m*(

話談tensorflow常見函式truncated_normal與random_normal 聯絡區別

tf.truncated_normal和random_normal都可以生成符合正態分佈的資料,對於前者,對於生成超過標準差2倍的資料會丟棄,後者就按指定標準差生成資料就好。 for example: >>> c = tf.truncated_normal(shap

[C++] STL函式之字串string::npos的介紹,以及string中的find函式

npos經常和find一起用~它們兩個都在標頭檔案<string>裡面~先看用法: #include <iostream> #include <string> us

postgresql常見數值,字元,日期型別常見函式總結

一.字元函式 函式 描述 例子 char_length(string) 獲取字串中字元的個數 test=> select char_length('abc123蘇

js中陣列操作常見函式forEach,map,reduce,filter,slice

var a = [1,22,333,4444,55555] function Counter() { this.sum = 0; } js中運算元組的常見函式有: forEach((ite

內建函式 匿名函式 sorted map filter等常見函式

內建函式 什麼是內建函式? 就是python給你提供的. 拿來直接用的函式, 比如print., input等等. 截⽌止 到python版本3.6.2 python⼀共提供了了68個內建函式. 他們就是python直接提供給我們的. 有 ⼀些我們已經⽤用過了了. 有一些還沒有⽤用過. 還有⼀些需要學完了了⾯

gs--常見函式說明

gst_pad_set_caps  gboolean gst_pad_set_caps (GstPad * pad, GstCaps * caps) 給pad設定CAPS。gst_caps_is_fi

sql語句常見函式

常見函式 語法: select 函式名(實參列表) 【from 表】; 分類: 單行函式 字元函式 concat:連線 substr:擷取子串 upper:大寫 lower:小寫 replace:替換 length:獲取位元組