Deletion
- erase : vector의 요소 제거, 범윌도 제거가 가능
-
더보기#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 요소 하나 제거
vec.erase(vec.begin() + 2); // {1, 2, 4, 5}
// 범위 제거
vec.erase(vec.begin(), vec.begin() + 2); // {4, 5}
for(int n : vec) {
std::cout << n << ' ';
}
return 0;
}
Assertion
- push_back : vector 끝에 요소를 추가 (복사해서 추가, queue의 push와 같은 작업)
-
더보기int main() {
std::vector<Person> people;
Person p1("Alice", 30);
people.push_back(p1); // 복사 또는 이동 연산 발생
Person p2("Bob", 25);
people.push_back(std::move(p2)); // 이동 연산 발생
for(const auto& person : people) {
std::cout << person.name << " " << person.age << std::endl;
}
return 0;
}
- emplace_back : vector끝에 요소를 추가하는데 직접 생성해서 추가 (복사 추가 X)
-
더보기int main() {
std::vector<Person> people;
people.emplace_back("Alice", 30); // 직접 생성
people.emplace_back("Bob", 25); // 직접 생성
for(const auto& person : people) {
std::cout << person.name << " " << person.age << std::endl;
}
return 0;
}
- emplace : vector에서 지정하는 위치를 추가하는 함수 (emplace_back과 동작은 같음)
-
더보기int main() {
std::vector<Person> people;
people.emplace(people.end(), "Alice", 30); // 특정 위치에 직접 생성
people.emplace(people.end(), "Bob", 25); // 특정 위치에 직접 생성
for(const auto& person : people) {
std::cout << person.name << " " << person.age << std::endl;
}
return 0;
}
- insert : vector의 특정 위치에 요소 삽입, 가변인자로서 동작.
push_back vs emplace_back, emplace
- 객체를 생성하고 난 후, push_back을 통해서 컨테이너에 정보를 추가하는 방식
- 2번의 과정이 필요한 것이 push_back
- push_back과 달리, 매개변수가 가변인자이기 때문에, 유연하게 객체 생성이 가능함.
- 객체를 직접 생성하고 나서 추가까지 한 번의 과정으로 이루어지는 방식이 emplace_back, emplace
- 단, emplace는 특정 위치에 추가하는 것이므로 위치 값이 매개변수로써 필요함.
참고자료
'C++' 카테고리의 다른 글
| C++) 문자 자료형 const WCHAR* , const wchar_t*, wstring (3) | 2024.11.06 |
|---|---|
| C++) 포인터 , 기초부터 다시하기 (2) | 2024.09.03 |
| C++) 재미로 해본 로또 번호 출력하기 (Feat. Insertion sort && Vector) (0) | 2024.08.20 |