前言
无
遍历vector的元素与删除指定位置的元素
从下面代码的执行结果可看出:
- data.begin()的类型为 std::vector::iterator
- data.rbegin()的类型为 std::reverse_iterator<std::vector::iterator>
- data.rbegin()如果想转为std::vector::iterator类型,需要std::next(it).base()。
#include <iostream>
#include <vector>
int main(int argc, char *argv[])
{
std::vector<int> data;
for (int i = 0; i < 10; i++) {
data.push_back(i);
}
constexpr int item1 = 3;
constexpr int item2 = 6;
auto printVectorData = [](std::vector<int> data) -> void {
std::string printfBuff;
for (auto it = data.begin(); it != data.end(); it++) {
printfBuff += std::to_string(*it);
printfBuff += " ";
}
printfBuff.pop_back();
std::cout << printfBuff << std::endl;
};
printVectorData(data);
for (auto it = data.begin(); it != data.end(); it++) {
if (*it == item1) {
data.erase(it, (it + 1));
}
}
for (auto it = data.rbegin(); it != data.rend(); it++) {
if (*it == item2) {
data.erase(std::next(it).base(), std::next(it).base() + 1);
}
}
printVectorData(data);
std::vector<int>::iterator iteratorBegin = data.begin();
std::reverse_iterator<std::vector<int>::iterator> iteratorRbegin = data.rbegin();
std::cout << *iteratorBegin << " " << *iteratorRbegin << std::endl;
return 0;
}
运行结果:
0 1 2 3 4 5 6 7 8 9
0 1 2 4 5 7 8 9
0 9
757

被折叠的 条评论
为什么被折叠?



