C++ 문법
배열 길이
1 2 3 4
int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; sizeof c_array // vector 길이 vector.capacity();
Map
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// 선언 map<string, int> m; // 확인 if (m.find("Alice") != m.end()) { cout << "find" << endl; } else { cout << "not find" << endl; } // 데이터 삽입 m.insert({"Cam", 300}); // 반복문 데이터 접근 for (auto iter = m.begin() ; iter != m.end(); iter++) { cout << iter->first << " " << iter->second << endl; } cout << endl; // 삭제 특정 인덱스 m.erase(m.begin()+2); // 삭제 key 값 기준 m.erase("Alice");
iterator
배열의 요소를 가르키는 포인터.
벡터
1 2 3 4
// 시퀀스 컨테이너 : 배열 처럼 객체를 순차적으로 보관 // vector, list, deque // 연관 컨테이너 : 키를 바탕으로 대응되는 값을 찾아줌 // vector: 가변 길이 배열
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include <iostream> #include <vector> int main() { std::vector<int> vec; vec.push_back(10); // 맨 뒤에 10 추가 vec.push_back(20); // 맨 뒤에 20 추가 vec.push_back(30); // 맨 뒤에 30 추가 vec.push_back(40); // 맨 뒤에 40 추가 for (std::vector<int>::size_type i = 0; i < vec.size(); i++) { std::cout << "vec 의 " << i + 1 << " 번째 원소 :: " << vec[i] << std::endl; } }
1 2 3
// iterator : 컨테이너에 원소에 접근할 수 있는 포인터와 같은 객체 vec.begin() // vector의 첫번째 원소를 가르키는 반복자를 리턴 vec.end() // vector의 마지막 원소 한칸 뒤를 가리키는 반복자를 리턴
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
#include <iostream> #include <vector> template <typename T> void print_vector(std::vector<T>& vec) { // 전체 벡터를 출력하기 for (typename std::vector<T>::iterator itr = vec.begin(); itr != vec.end(); ++itr) { std::cout << *itr << std::endl; } } int main() { std::vector<int> vec; vec.push_back(10); vec.push_back(20); vec.push_back(30); vec.push_back(40); std::cout << "처음 벡터 상태" << std::endl; print_vector(vec); std::cout << "----------------------------" << std::endl; // vec[2] 앞에 15 추가 vec.insert(vec.begin() + 2, 15); print_vector(vec); std::cout << "----------------------------" << std::endl; // vec[3] 제거 vec.erase(vec.begin() + 3); print_vector(vec); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
// 범위 기반 for문 #include <iostream> #include <vector> int main() { std::vector<int> vec; vec.push_back(1); vec.push_back(2); vec.push_back(3); // range-based for 문 for (int elem : vec) { std::cout << "원소 : " << elem << std::endl; } return 0; } // 실행 결과 //원소 : 1 //원소 : 2 //원소 : 3