Удаление по значению в C++
Чтобы убрать все совпадения с числом, обходят исходный вектор и в новый записывают только те элементы, которые не равны искомому:
std::vector<int> vec = {1, 2, 3, 2};
std::vector<int> vec2;
for (int i = 0; i < vec.size(); ++i) {
if (vec[i] != 2) {
vec2.push_back(vec[i]);
}
}
vec = vec2;
std::cout << vec.size() << "\n";
Чтобы убрать одно первое вхождение, достаточно пропустить его один раз флагом:
std::vector<int> vec = {1, 2, 3, 1, 4};
std::vector<int> vec2;
bool flag = false;
for (int i = 0; i < vec.size(); ++i) {
if (!flag && vec[i] == 1) {
flag = true;
} else {
vec2.push_back(vec[i]);
}
}
vec = vec2;
std::cout << vec[0] << "\n";
Дан вектор:
std::vector<int> vec = {1, 2, 3, 4, 5};
Уберите из вектора число 3, собрав
новый вектор без него. Выведите длину
результата в консоль.
Дан вектор:
std::vector<int> vec = {1, 2, 3, 1, 4, 1, 5};
Уберите одно вхождение числа 1.
Выведите первый элемент вектора в консоль.