练习9.13
list<int> l{1, 2, 3, 4, 5};
vector<double> v(l.begin(), l.end());
练习9.25
void print(vector<int> &v) {
for (auto &elem : v) {
cout << elem << endl;
}
}
int main() {
vector<int> v{1,2,3};
vector<int>::iterator it = ++v.begin();
v.erase(it, it);
print(v);
v.erase(v.end());
print(v);
v.erase(v.end(), v.end());
print(v);
return 0;
}
练习9.31
void print(list<int> &v) {
for (auto &elem : v) {
cout << elem << endl;
}
}
int main() {
list<int> lst = {1,2,3,4,5,6,7,8,9};
auto iter = lst.begin();
while (iter != lst.end()) {
if (*iter % 2) {
iter = lst.insert(iter, *iter);
++iter;
++iter;
} else {
iter = lst.erase(iter);
}
}
print(lst);
return 0;
}
void print(forward_list<int> &v) {
for (auto &elem : v) {
cout << elem << endl;
}
}
int main() {
forward_list<int> lst = {1,2,3,4,5,6,7,8,9};
auto iter = lst.before_begin();
auto curr = lst.begin();
while (curr != lst.end()) {
if (*curr % 2) {
curr = lst.insert_after(iter, *curr);
++curr;
iter = curr;
++curr;
} else {
curr = lst.erase_after(iter);
}
}
print(lst);
return 0;
}
练习9.32
iter = vi.insert(iter, *iter++);