C++의 벡터에서 요소 제거
-
erase()
메서드를 사용하여 C++의 벡터에서 요소 제거 -
std::erase()
메서드를 사용하여 C++의 벡터에서 요소 제거 -
std::erase()
및std::remove()
를 사용하여 C++의 벡터에서 요소 제거
이 기사에서는 C++의 벡터에서 요소를 제거하는 방법에 대한 몇 가지 방법을 설명합니다.
erase()
메서드를 사용하여 C++의 벡터에서 요소 제거
erase()
메서드는std::vector
클래스의 멤버 함수이며 벡터의 단일 요소 또는[first, last]
로 지정된 범위를 사용할 수 있습니다. 이 함수는 마지막으로 제거 된 요소 다음에 반복기를 반환합니다. 다음 코드 샘플과 같이 단일 요소가 제거되면 전달 된 반복기는 역 참조 가능해야합니다.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
void PrintVec(vector<string> &vec) {
for (const auto &item : vec) {
cout << item << "; ";
}
cout << endl;
}
int main() {
vector<string> str_vec = {"array", "vector", "deque", "list", "set",
"map", "stack", "queue", "multimap", "span"};
PrintVec(str_vec);
// DELETE element "set"
auto elem_to_remove = str_vec.begin() + 4;
if (elem_to_remove != str_vec.end()) {
str_vec.erase(elem_to_remove);
}
PrintVec(str_vec);
return EXIT_SUCCESS;
}
출력:
array; vector; deque; list; set; map; stack; queue; multimap; span;
array; vector; deque; list; map; stack; queue; multimap; span;
std::erase()
메서드를 사용하여 C++의 벡터에서 요소 제거
이std::erase()
는 일치 할 때마다 삭제할 모든 요소와 비교되는 범위와 값을 취하는 비 멤버 함수입니다. 이 메서드는 단일 요소를 제거해야하는 경우 단점이있을 수 있지만 두 번째 인수를 배열 변수 인arr[index]
로 전달하여 이러한 동작을 피할 수 있습니다. 다음 예에서 보여 주듯이erase
는array
요소 만 제거합니다.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::erase;
using std::string;
using std::vector;
void PrintVec(vector<string> &vec) {
for (const auto &item : vec) {
cout << item << "; ";
}
cout << endl;
}
int main() {
vector<string> str_vec = {"array", "vector", "deque", "list", "set",
"map", "stack", "queue", "multimap", "span"};
PrintVec(str_vec);
// DELETE elemen "array"
erase(str_vec, str_vec[0]);
PrintVec(str_vec);
return EXIT_SUCCESS;
}
출력:
array; vector; deque; list; set; map; stack; queue; multimap; span;
vector; deque; list; set; map; stack; queue; multimap; span;
std::erase()
및std::remove()
를 사용하여 C++의 벡터에서 요소 제거
이 방법을 Erase-remove 관용구라고하며 특정 값과 동일하거나 주어진 범위에서 기준을 충족하는 모든 요소를 제거합니다. 이 솔루션에는 const_iterator
를 반환하는 컨테이너와 함께 사용할 수없는 것과 같은 몇 가지 예외적 인 기능이 있습니다.
#include <algorithm>
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::erase;
using std::string;
using std::vector;
void PrintVec(vector<string> &vec) {
for (const auto &item : vec) {
cout << item << "; ";
}
cout << endl;
}
int main() {
vector<string> str_vec = {"map", "vector", "deque", "list", "set",
"map", "stack", "queue", "map", "span"};
PrintVec(str_vec);
// DELETES all elements with value "map"
str_vec.erase(std::remove(str_vec.begin(), str_vec.end(), "map"),
str_vec.end());
PrintVec(str_vec);
return EXIT_SUCCESS;
}
출력:
map; vector; deque; list; set; map; stack; queue; map; span;
vector; deque; list; set; stack; queue; span;
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook