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

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