반응형
Modern C++
에서 표준 라이브러리 컨테이너는 다양한 초기화 방법을 제공합니다.- 컨테이너의 적절한 초기화 방식은 코드의 가독성과 성능 최적화에 중요한 역할을 합니다.
- 이번 글에서는
C++
의 모든 주요 컨테이너를 효과적으로 초기화하는 방법을 예제 코드와 함께 살펴보겠습니다.
-
cpp
#include <iostream> #include <vector> #include <array> #include <list> #include <deque> #include <forward_list> #include <set> #include <unordered_set> #include <map> #include <unordered_map> #include <algorithm> int main() { // 1. std::vector std::vector<int> vec1 = {1, 2, 3, 4, 5}; // 리스트 초기화 std::vector<int> vec2(5, 10); // 크기 5, 모든 원소를 10으로 초기화 std::vector<int> vec3(vec1.begin(), vec1.end()); // 다른 컨테이너로부터 초기화 // 2. std::array (고정 크기 배열) std::array<int, 5> arr1 = {1, 2, 3, 4, 5}; std::array<int, 5> arr2{10, 20, 30, 40, 50}; // 동일한 효과 // 3. std::list (이중 연결 리스트) std::list<int> lst1 = {1, 2, 3, 4, 5}; std::list<int> lst2(5, 100); // 크기 5, 모든 원소를 100으로 초기화 std::list<int> lst3(vec1.begin(), vec1.end()); // 다른 컨테이너로부터 초기화 // 4. std::deque (양방향 큐) std::deque<int> deq1 = {1, 2, 3, 4, 5}; std::deque<int> deq2(4, 200); // 크기 4, 모든 원소를 200으로 초기화 std::deque<int> deq3(lst1.begin(), lst1.end()); // 다른 컨테이너로부터 초기화 // 5. std::forward_list (단일 연결 리스트) std::forward_list<int> flst1 = {1, 2, 3, 4, 5}; std::forward_list<int> flst2(flst1.begin(), flst1.end()); // 다른 컨테이너로부터 초기화 // 6. std::set (중복 없는 정렬된 집합) std::set<int> set1 = {5, 1, 4, 2, 3}; // 자동 정렬됨 std::set<int> set2(set1.begin(), set1.end()); // 다른 컨테이너로부터 초기화 // 7. std::unordered_set (중복 없는 비정렬 집합) std::unordered_set<int> uset1 = {5, 1, 4, 2, 3}; std::unordered_set<int> uset2(uset1.begin(), uset1.end()); // 다른 컨테이너로부터 초기화 // 8. std::map (정렬된 key-value 쌍) std::map<int, std::string> map1 = {{1, "one"}, {2, "two"}, {3, "three"}}; std::map<int, std::string> map2(map1.begin(), map1.end()); // 다른 컨테이너로부터 초기화 // 9. std::unordered_map (비정렬 key-value 쌍) std::unordered_map<int, std::string> umap1 = {{1, "apple"}, {2, "banana"}, {3, "cherry"}}; std::unordered_map<int, std::string> umap2(umap1.begin(), umap1.end()); // 다른 컨테이너로부터 초기화 // 10. std::multiset (중복 허용 집합) std::multiset<int> mset1 = {1, 2, 2, 3, 3, 3}; std::multiset<int> mset2(mset1.begin(), mset1.end()); // 다른 컨테이너로부터 초기화 // 11. std::multimap (중복 허용 key-value 쌍) std::multimap<int, std::string> mmap1 = {{1, "one"}, {1, "uno"}, {2, "two"}}; std::multimap<int, std::string> mmap2(mmap1.begin(), mmap1.end()); // 다른 컨테이너로부터 초기화 // 출력 예제 std::cout << "vector: "; for (int v : vec1) std::cout << v << " "; std::cout << "\nset: "; for (int s : set1) std::cout << s << " "; std::cout << "\nmap: "; for (const auto& [k, v] : map1) std::cout << "{" << k << ", " << v << "} "; std::cout << std::endl; return 0; }
- 위 코드를 통해 C++의 다양한 컨테이너를 초기화하는 방법을 확인할 수 있었습니다.
- 각 컨테이너는 목적과 특징이 다르므로, 필요에 맞는 컨테이너를 선택하여 사용하면 됩니다.
- 초기화 방식에 따라 성능과 사용성이 달라질 수 있으니, 코드 작성 시 신중하게 선택하시길 바랍니다! 🚀
- 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
728x90
반응형
'C C++' 카테고리의 다른 글
C++ enum class 문자열 변환 방법 (0) | 2025.03.17 |
---|---|
C 언어를 위한 안전한 printf 구현: safe_printf() (0) | 2025.03.17 |
Modern C++ 문자열(string) 발전사 (0) | 2025.03.16 |
C++14 긴 2진수(binary)를 가독성 좋게 표현하는 방법 (0) | 2025.03.15 |
C++11 std::vector<int> 초기화 방식 비교 (0) | 2025.03.15 |