vector常見實用總結——沒錯,就是你要找的那種

紙上談兵

1、說明:

  •   vector 爲動態數組
  •   適用範圍比普通數組更廣
  •   以向量類型存儲元素

2、聲明:

  • vector<數據類型> 變量名(容器大小,初始值)

       例:vector<vector<string>>s(n,vector<int>(m,“hahaha”));

  • vector<數據類型> 變量名(同類型的vector)

       例:vector<vector<string>> temp(n,vector<int>(m,“hahaha”));

               vector<vector<string>>s(temp);或vector<vector<string>>s(temp.begin() , temp.end());

3、訪問大小:

  • 一維長度:s.size()
  • 二維長度:s[0].size()

4、插入元素:

         t=“xixixi”;

         s[i].push_back(t);

5、刪除元素:s[i].pop_back()

6、重置大小:s[i].resize(k,“guaguagua”) ;

7、迭代器訪問元素

  • 簡便寫法:
auto it=s.begin();

for(;it != s.end(); ++it)

    for(auto i=it->begin();i != it->end(); ++ i)

        cout<<(*i);//輸出“hahaha”
  • 原始寫法:

           將auto改成vector<vector<string>>::iterator 即可,即:

vector<vector<string>>::iterator it = it.begin();

for(;it != s.end(); ++it)

    for(vector<string>::iterator i=it->begin();i != it->end(); ++ i)

        cout<<*i;//輸出“hahaha”

8、非迭代器訪問元素:

for(int i = 0; i <s.size(); ++i)

    for(int j = 0;j < s[i].size(); ++j)

        cout<<s[i][j]//功能同上

9、清空所有元素元素:s.clear()

10、清空指定行所有元素:s[i].clear()

11、判斷vector容器內是否爲空:s.empty(),s[i].empty();空則返回ture,否則返回false

12、刪除指定長度[a,b)內的所有元素:s[i].erase(s[i].begin()+a,s[i].begin()+b)

13、刪除指定元素k:s[i].erase( find(s[i].begin(),s[i].end(),k) );

14、兩個vector內的元素整體交換:s.swap(temp)

15、插入指定j位置的元素k:s[i].insert(s[i].begin() + j , k)

16、模擬隊列訪問首元素:s[i].front()

17、模擬棧訪問尾元素:s[i].back()

18、兩個類型相同的vector可直接比較大小:見代碼

代碼實現

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
bool cmp(vector<string> a, vector<string> b)
{
    return a[0]<b[0];
}
int main()
{
    int n,m;
    cin>>n>>m;
    
    //聲明
    vector<vector<string> > temp(n,vector<string>(m,"hahah"));
    vector<vector<string> > s(temp.begin(),temp.end());
    
    //容器大小
    cout<<s.size()<<endl;
    cout<<s[0].size()<<endl;
    
    //遍歷元素
    for(auto i = s.begin() ; i != s.end() ; ++i)
        for(auto j = (*i).begin() ; j != (*i).end() ; ++j)
             cout<<*j<<endl;
             
     //插入元素
     s[0].push_back("xixixi");
     s[0].insert(s[0].begin()+1,"hehehe");
     
     //刪除元素
     s[0].pop_back();
     s[0].erase(find(s[0].begin() , s[0].end() , "hehehe"));
     s[0].clear();
     
     //判空
     cout<<s[0].empty();
     
     //排序
     sort(s.begin(),s.end(),cmp);
     
     //反轉
     reverse(s[1].begin(),s[1].end());
     
     //比較
     if(s[1]<s[2])//按照字典序進行比較
         cout<<1<<endl;
     else cout<<0<<endl;
    return 0;
}

總結 
這些都是我在做題的實踐過程中所使用到關於vector的相關知識,應該說是解決了你所要查關於vector的用法的需求,少年努力吧💪

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章