C++ vector常用接口
2018-05-21 本文已影响0人
林逸凡_lyf
初始化
vector<int> a(10, 1); //声明包含10个1的数组
int n[] = {1, 2, 3, 4, 5};
vector<int> b(n, n+5); //将n的前五个元素作为b的初始值
基本接口
vector<int> a = {1, 2, 3, 4, 5, 6, 7};
a.size(); //a的元素个数
a.empty(); //a是否为空
a.clear(); //清空a
insert和erase
vector<int> a = {1, 2, 3};
a.insert(a.begin(), 0); //a = {0, 1, 2, 3}, 将0插入begin的位置
a.erase(a.begin()); //a = {1, 2, 3}, 删除begin的字符
a.erase(a.begin(), a.begin()+1); //a={3}, 从begin开始到begin+1都删除
assign
vector<int> a;
a.assign(7, 1); //a = {1, 1, 1, 1, 1, 1, 1}
sort,find
sort 和 find都在algorithm头文件里,需要引入
bool compare(const pair<string, int>& p1, const pair<string, int>& p2) {
return p1.second > p2.second;
}
sort(pairs.begin(), pairs.end(), compare); //使用compare函数进行排序
stable_sort(pairs.begin(), pairs.end()); //稳定排序,不会改变原来的顺序
find(pairs.begin(), pairs.end(), val); //查找
bool operator==(const Person& p1, const Person& p2) {
return p1.age == p2.age;
} // 重载==操作符后find会使用重载的==进行查找
vector<Person> persons = {p1, p2, p3}; //数组内不能是指针形式,否则无法使用重载的==
find(persons.begin(), persons.end(), p4);