vector中 迭代器的使用 以及元素的去重、排序、插入、删除操作。 【小笔记】
来源:互联网 发布:数据统计权威网站 编辑:程序博客网 时间:2024/04/28 20:44
看详细总结的请绕行,我写的只有实现过程。
去重单独写出来:其中it是迭代器
vector<int> G;vector<int> ::iterator it;it = unique(G.begin(), G.end()), G.erase(it, G.end());//去重
一维vector的修改:
#include <cstdio>#include <algorithm>#include <vector>#include <map>#include <string>#include <set>using namespace std;vector<int> G;vector<int> ::iterator it;//迭代器int main(){ G.push_back(10); G.push_back(3); G.push_back(4); printf("容器元素\n"); for(int i = 0; i < G.size(); i++) printf("%d ", G[i]); printf("\n\n"); printf("我们想把元素升序排列\n"); sort(G.begin(), G.end());//排序 printf("操作结果\n"); for(int i = 0; i < G.size(); i++) printf("%d ", G[i]); printf("\n\n"); printf("我们想插入元素5 并保持元素的升序排列\n"); it = upper_bound(G.begin(), G.end(), 5);//查询比插入值大的第一个位置 G.insert(it, 5);//插入it位置前面 printf("操作结果\n"); for(int i = 0; i < G.size(); i++) printf("%d ", G[i]); printf("\n\n"); printf("我们想删除元素4 并保持元素的升序排列\n"); it = find(G.begin(), G.end(), 4);//查找元素 如果找不到返回G.end() G.erase(it);//删除元素 后续元素向前移动 printf("操作结果\n"); for(int i = 0; i < G.size(); i++) printf("%d ", G[i]); printf("\n"); return 0;}
二维vecotr的操作:这里的排列在cmp里面实现【我默认的是按s升序排列】
#include <cstdio>#include <algorithm>#include <vector>#include <map>#include <string>#include <set>using namespace std;struct Node{ int s, e;};vector<Node> G;vector<Node> ::iterator it;//迭代器bool cmp(Node a, Node b)//以起点升序排列{ return a.s < b.s;}int main(){ G.push_back((Node){10, 5}); G.push_back((Node){3, 6}); G.push_back((Node){4, 7}); printf("容器元素\n"); for(int i = 0; i < G.size(); i++) printf("%d-%d ", G[i].s, G[i].e); printf("\n\n"); printf("我们想把元素升序排列\n"); sort(G.begin(), G.end(), cmp);//排序 printf("操作结果\n"); for(int i = 0; i < G.size(); i++) printf("%d-%d ", G[i].s, G[i].e); printf("\n\n"); printf("我们想插入元素[5,6] 并保持元素的升序排列\n"); Node E1 = {5, 6}; it = upper_bound(G.begin(), G.end(), E1, cmp);//查询比插入值起点大的第一个位置 G.insert(it, E1);//插入it位置前面 printf("操作结果\n"); for(int i = 0; i < G.size(); i++) printf("%d-%d ", G[i].s, G[i].e); printf("\n\n"); printf("我们想删除元素[4,7] 并保持元素的升序排列\n"); //find()第三个参数只能传入一个值 所以查询时可以采用遍历的方式 int pos; for(int i = 0; i < G.size(); i++) { if(G[i].s == 4 && G[i].e == 7) { pos = i; break; } } G.erase(pos + G.begin());//删除元素 后续元素向前移动 printf("操作结果\n"); for(int i = 0; i < G.size(); i++) printf("%d-%d ", G[i].s, G[i].e); printf("\n\n"); return 0;}
执行结果:
0 0
- vector中 迭代器的使用 以及元素的去重、排序、插入、删除操作。 【小笔记】
- vector的排序和去重
- 关于STL中vector使用unique()去重的问题
- 关于STL中vector使用unique()去重的问题
- 问题: 将N个元素使用push_back插入到vector中, 求push_back操作的复杂度。
- c语言心得-----数组中对元素的操作排序,查找,插入,和删除
- STL中map/vector的删除元素操作
- 堆的建立、删除、插入操作以及堆排序
- C/C++中vector的操作(排序、删除)
- 链表的简单操作(插入,删除,置反,输出,合并,去重)
- c++中set的使用:初始化和去重、排序
- 【规范代码】关于vector的去重及排序
- vector元素的删除
- vector中特定元素的删除
- vector中特定元素的删除
- STL中Vector元素的删除
- 删除vector中元素高效的方法
- iOS开发-NSAarray数字组的元素去重-OC操作中数组元素的去重样例
- 通过Java Api与HBase交互(转)
- ios 错误排查
- tableView第一次点击无效,第二次点击响应第一次,第三次响应第二次
- Windows远程桌面连接ubuntu 14.04图解设置教程
- 哪些内容会被新闻源惩罚呢?
- vector中 迭代器的使用 以及元素的去重、排序、插入、删除操作。 【小笔记】
- [python] 0x9 Python Tutorial: Command Automation
- txt文件编码判断
- echarts-折线图
- errno.h头文件介绍
- 【.Net码农】基于jquery的$.ajax async使用
- 技术人才的出路在哪里
- laravel 分页 说明
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制