c++ STL 二 vector,排序

1.vector 構造

int arr[] = { 2,3,4,5 };	
vector<int> v(arr, arr + sizeof(arr) / sizeof(int));
vector<int> v(10, 1);     創建10個  1在容器
vector<int> v3;        v3.assign(v2.begin(), v2.end());      將v2給v3
v2.swap(v3);         交換v2  v3        
int a= v2.size();    得到大小
v2.empty();          判斷是否爲空
v2.rsize(10)         重置容器大小默認0填充,

2.vector 遍歷

   使用迭代器 vector<int>::iterator begin       生成迭代器位置

    vector<int>  v;
	v.push_back(10);
	v.push_back(20);
	v.push_back(30);
	vector<int>::iterator begin = v.begin();
	vector<int>::iterator end = v.end();
	while (begin!=end)
	{
		cout << *begin <<endl;
		begin++;
	}

   第二種  for 循環方式

for (vector<int>::iterator it=v.begin();it!=v.end(); it++ )
	{
		cout << *it << endl;            }

 for_each 算法遍歷

for_each(_InIt _First, _InIt _Last, _Fn _Func)    容器第一個指針   第二個指針   將遍歷得到值傳入一個函數

void Myprint(int value)
{
	cout << value << endl;
}
for_each(v.begin(), v.end(), Myprint);

  自定義類型遍歷

    指針就是存着一個地址, 而這個地址又存着一個具體的值

class Person{
public:
	Person(int age)
	{
		this->age = age;}
    int age;};

int main(void) {
	Person p1(15);
	Person p2(16);
	Person p3(17);
	vector<Person> v;
	v.push_back(p1);
	v.push_back(p2);
	v.push_back(p3);
	for (vector<Person>::iterator it=v.begin();it!=v.end(); it++ )
	{
		cout << it->age<< endl;
		cout << (*it).age<< endl;
}

 逆序遍歷

for (vector<int>::reverse_iterator it = v.rbegin();it!=v.rend();it++) {}

  支持隨機訪問 :   vector<int>::iterator begin =v.begin()        begin = begin+3          不支持的不能 +   

 

3.vector 數據存取

vector<int> v;
int first = v.front();   返回第一個數據
int last = v.back();     返回最後一個數據

  插入,刪除最後一個

v.insert(v.begin(), 10);       //向V中第一個前面插入 10
v.insert(v.begin(),2, 10);     //向V中第一個前面插入兩個 10
v.pop_back();     刪除最後一個

指定位置刪除

v.erase(v.begin());           刪除第一個
v.erase(v.begin(),v.end());   從第一個刪到最後一個

  v.clear() 刪除全部

排序

 1.sort(v.begin() , v.end())       默認從小到大                      2.自定義規則排序

bool Mycompare(int v1,int v2){
	return v1>v2;        }
sort(v.begin(), v.end(), Mycompare);

迭代器

普通迭代器 vector<int>::iterator it      反序迭代器: vector<int>::reverse_iterator it   只讀迭代器: vector<int>::const_iterator it

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