浅谈c++ vector和map的遍历和删除对象
概述
在c++的stl中,vector和map是常用的数据结构。它们都有遍历和删除对象的需求,下面将详细介绍如何使用c++ vector和map完成遍历和删除对象的操作。
vector的遍历和删除元素
遍历vector
遍历vector可以使用迭代器,得到vector的每个元素。
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 4, 5};
for (auto i = vec.begin(); i != vec.end(); i++) {
cout << *i << " ";
}
cout << endl;
return 0;
}
结果为:
1 2 3 4 5
删除元素
在vector中删除元素可以使用erase()函数。对于vector中的任何元素进行删除都会导致后面所有元素的位置向前移动,所以vector的删除操作开销很大。
删除vector中的一个元素,可以使用以下代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2);
for (auto i = vec.begin(); i != vec.end(); i++) {
cout << *i << " ";
}
cout << endl;
return 0;
}
结果为:
1 2 4 5
这里我们删除了vector中的第三个元素,即数字3。
map的遍历和删除元素
遍历map
在c++中,map是关联式容器,它存储了“关键字--值”对,所以map的遍历就是遍历这些“关键字--值”对。
遍历map也可以使用迭代器,得到map的每个“关键字--值”对。注意,map中的元素是按“关键字”排序的。
#include <iostream>
#include <map>
using namespace std;
int main() {
map<string, int> mp;
mp["apple"] = 1;
mp["orange"] = 2;
mp["banana"] = 3;
for (auto i = mp.begin(); i != mp.end(); i++) {
cout << i->first << " " << i->second << endl;
}
return 0;
}
结果为:
apple 1
banana 3
orange 2
删除元素
在map中删除元素也可以使用erase()函数。删除一个元素会导致所有后面的元素的位置向前移动。删除一个值的大小是O(logn)的,删除整个map的大小是O(n)的。
以下代码演示如何使用erase()函数删除map中的一个元素。
#include <iostream>
#include <map>
using namespace std;
int main() {
map<string, int> mp;
mp["apple"] = 1;
mp["orange"] = 2;
mp["banana"] = 3;
mp.erase("orange");
for (auto i = mp.begin(); i != mp.end(); i++) {
cout << i->first << " " << i->second << endl;
}
return 0;
}
结果为:
apple 1
banana 3
这里我们删除了一个关键字为"orange"的“关键字--值”对。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈c++ vector和map的遍历和删除对象 - Python技术站