紙上談兵
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;
}