vector
vector
vector索引
vector只有在指定长度时,才能用下标索引的方法修改元素
1 |
|
下标访问
1 |
|
迭代器访问
迭代器类似指针,迭代器在vector中就是充当指针的作用
1 |
|
返回首尾部的元素
front()
返回第一个元素back()
返回最后一个元素
vector 插入/删除 元素
- 在尾部进行插入/删除
push_back()
pop_back()
- 指定位置的插入/删除
insert()
c.insert(it, x) : 向任意迭代器it插入一个元素x ,O(N)erase()
c.erase(first,last) 删除[first,last)的所有元素,first,last都为迭代器指针 ,O(N)
vector去重
- 先进行 sort() 排序,这样重复元素就会堆一起了
- 调用 unique() 函数将相邻且重复 (因此要先排序) 的元素放到vector的尾部 然后返回指向第一个重复元素的迭代器
- 再用erase函数擦除从迭代器所指元素到最后元素的所有的元素
1 |
|
vector截取
void assign(const_iterator first,const_iterator last); //两个指针,分别指向开始和结束的地方
1 |
|
第k小数
寻找序列第k小的值
nth_element(beg, nth, end)
nth_element(a,a+k,a+n)
,函数只是把下标为k的元素放在了正确位置
求第k大时,我们可以转化成求第n+1-k小,此时下标应该是n - k,所以为nth_element(a,a+n-k,a+n)
也可以用cmp自定义比较函数,greater<int>()
nth为一个迭代器,指向序列中的一个元素。第n小的值恰好在nth位置上
执行nth_element()之后,序列中的元素会围绕nth进行划分:nth之前的元素都小于等于它,而之后的元素都大于等于它
哈希表 + vector
unordered_map<int,int> st;
哈希表统计数据vector<pair<int,int>> a;
vector的sort来排序
1 |
|