STL 컨테이너
2024. 7. 29. 13:52 - pingu-s
벡터
#include <iostream>
#include <vector>
using namespace std;
vector<int> v;
vector<int> v2 = {1, 2, 3, 4, 5};
vector<int> v3(4, 3);
vector<int> v4(v3);
#include <iostream>
#include <vector>
using namespace std;
// 빈 2차원 벡터 선언
vector<vector<int>> v1;
// 특정 크기로 초기화된 2차원 벡터
int rows = 3;
int cols = 4;
vector<vector<int>> v2(rows, vector<int>(cols));
// 특정 값으로 초기화된 2차원 벡터
int val = 9;
vector<vector<int>> v3(rows, vector<int>(cols, val));
// 초기화 리스트를 사용한 2차원 벡터 초기화
vector<vector<int>> v4 = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 4, 5};
// 인덱스 2의 원소를 10으로 수정
vec[2] = 10;
return 0;
}
맨 뒤에 원소를 삽입할 때는 push_back(), 맨 뒤에 있는 원소를 삭제할 때는 pop_back() 메서드를 활용
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {2, 3, 4, 5};
// 맨 뒤에 원소 삽입
v.push_back(6);
// 맨 뒤에 원소 삭제
v.pop_back();
return 0;
}
맨 앞에 원소를 삽입할 때는 insert(), 맨 앞의 원소를 삭제할 때는 erase() 메서드를 사용
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {2, 3, 4, 5};
// 맨 앞에 원소 삽입
v.insert(v.begin(), 1); // v: {1, 2, 3, 4, 5}
// 맨 앞의 원소 삭제
v.erase(v.begin()); // v: {2, 3, 4, 5}
return 0;
}
셋
#include <iostream>
#include <set>
using namespace std;
set<int> s1; // 빈 셋 선언
set<int> s2 = {3, 1, 3, 2, 5}; // 초기화 리스트를 사용한 셋 초기화
set<int> s3(s2); // 다른 셋을 사용하여 초기화
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> numbers = {1, 2, 3, 4, 5};
int targets[] = {3, 7}; // 원소가 3과 7인 배열
for (int target : targets) {
// set에서 원소를 탐색하는 방법
auto it = numbers.find(target);
if (it != numbers.end()) {
cout << "원소 " << target << "를 찾았습니다. 값: " << *it << endl;
} else {
cout << "원소 " << target << "를 찾지 못했습니다." << endl;
}
}
return 0;
}
/*
원소 3를 찾았습니다. 값: 3
원소 7를 찾지 못했습니다.
*/
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> s = {1, 3, 2, 1, 5};
// 원소 4 삽입
s.insert(4);
// 원소 2 삭제
s.erase(2);
// 원소 4가 있는지 확인 후 삭제
auto it = s.find(4);
if (it != s.end()) {
s.erase(it);
}
return 0;
}
맵
#include <iostream>
#include <map>
#include <string>
using namespace std;
// 빈 맵 선언
map<string, double> employeeSalaries;
map<string, double> studentGrades = {
{"John", 3.7},
{"Emma", 3.9},
{"Sophia", 4.0}
};
맵에서 특정 키에 접근하는 방법, [] 연산자 활용하기, find() 메서드 활용하기
#include <iostream>
#include <map>
using namespace std;
int main() {
// 맵 생성
map<string, int> studentScores;
// 키-값 쌍 추가
studentScores["Alice"] = 95;
studentScores["Bob"] = 88;
studentScores["Charlie"] = 92;
// [] 연산자를 사용하여 키에 접근 - 키가 있는 경우
int score1 = studentScores["Alice"];
cout << score1 << endl; // 출력값 : 95
// [] 연산자를 사용하여 키에 접근 - 키가 없는 경우
int score2 = studentScores["rabbit"];
cout << score2 << endl; // 출력값 : 0
// find() 메서드를 사용하여 키에 접근
auto it = studentScores.find("Charlie");
if (it != studentScores.end()) {
int score3 = it->second;
cout << score3 << endl; // 출력값 : 92
}
return 0;
}
#include <iostream>
#include <map>
using namespace std;
int main() {
map<string, int> myMap = {{"Apple", 1}, {"Banana", 2}, {"Cherry", 3}};
// "Banana" 키에 해당하는 값을 10으로 수정
myMap["Banana"] = 10;
return 0;
}
맵에 원소를 삽입할 때 insert() 메서드 또는 [] 연산자를 활용, 삭제할 때는 erase() 메서드를 사용
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, string> myMap;
myMap.insert(make_pair(1, "Apple"));
myMap.insert({2, "Banana"});
myMap[3] = "Cherry";
for (const auto &pair : myMap) {
cout << pair.first << ": " << pair.second << endl;
}
/*
1: Apple
2: Banana
3: Cherry
*/
// 삭제
myMap.erase(2);
for (const auto &pair : myMap) {
cout << pair.first << ": " << pair.second << endl;
}
/*
1: Apple
3: Cherry
*/
auto it = myMap.find(3);
if (it != myMap.end()) {
myMap.erase(it);
}
// 삭제 후 맵 출력
for (const auto &pair : myMap) {
cout << pair.first << ": " << pair.second << endl;
}
/*
1: Apple
*/
return 0;
}
정렬되지 않은 셋과 맵
정렬되지 않은 셋을 사용하려면 #include<unordered_set>, 정렬되지 않은 맵을 사용하려면 #include<unordered_map>을 추가
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
unordered_set<int> myUnorderedSet;
// 삽입
myUnorderedSet.insert(3);
myUnorderedSet.insert(1);
myUnorderedSet.insert(4);
myUnorderedSet.insert(2);
for (int num : myUnorderedSet) {
cout << num << " ";
}
cout << endl;
// 출력값: 2 4 1 3
return 0;
}
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_map<string, int> myUnorderedMap;
// 삽입
myUnorderedMap["apple"] = 3;
myUnorderedMap["banana"] = 1;
myUnorderedMap["cherry"] = 4;
myUnorderedMap["date"] = 2;
// unordered_map의 요소 출력
for (const auto& pair : myUnorderedMap) {
cout << pair.first << ": " << pair.second << endl;
}
/*
출력값 :
date: 2
cherry: 4
banana: 1
apple: 3
*/
return 0;
}
'개발 > C++' 카테고리의 다른 글
배열 (0) | 2024.07.30 |
---|---|
STL 알고리즘 (0) | 2024.07.29 |
문법 정리 (0) | 2024.07.25 |
배열, 리스트, 벡터 (1) | 2024.04.30 |
C++ 생성자와 정적 멤버3 (0) | 2022.05.16 |