본문 바로가기

언어/C++12

(C++)참조자 const 참조자는 L-value와 R-value참조자가 있다. 초기값으로 각 value에 맞는 값을 넣어주면 되는데 const키워드가 붙은 참조자에 대해 알아보자. 1. const int& const int& a 나 int const& a나 같은 의미이다. 둘다 참조자 자체를 상수화시키는게 아니라 상수형 int를 참조하는 의미이다. const int를 참조하기 때문에 (초기화되는 변수가 꼭 const일필요는 없다.) 해당 변수의 별명격인 참조자의 값을 다른값으로 바꿀수 없다. 또한 초기값으로 항상 변수가 와야했던것과 달리 const이기에 상수로 초기화 해 줄 수 있다. 2. int& const 참조자 자체를 상수화 시킨다. 하지만 생각해보면 참조자 자체가 const와 동격이 된다. L-value참조자의 경우 처음.. 2020. 10. 6.
(C++)연관컨테이너(set, multiset, map, multimap) 연관 컨테이너와 시퀀스 컨테이너(vector, deque, list)의 차이 각 원소를 삽입할때 연관 컨테이너는 자동으로 함수객체(디펄트로 less객체)에 따라 정렬되며, 또한 시퀀스컨테이너는 배열, 리스트로 구현되는것과 다르게 내부 데이터가 Balaced Tree로 구현된다. push_back(), push_front(), front(), back()같은 함수가 존재하지 않는다. 그렇기에 접근에 유리한 vector와 deque / 삽입, 삭제에 유리한 List 에 비해 연관 컨테이너는 탐색에 Log 시간대를 가지며 유리하다. 또한 연관컨테이너는 4개 모두 같은 인터페이스를 가진다. multi? multi가 붙은 컨테이너는 키값의 중복을 허용한다. equalrange(), lower_bound(), up.. 2020. 9. 22.
(C++)List 리스트는 vector, deque와 같은 시퀀스 컨테이너지만 각 원소가 서로 상대적인 순서를 유지하는게 아닌 노드단위로 연결되있단 점이 가장 큰 차이이다. 시퀀스 데이터들을 다룰때 주의해서 쓴다면 큰 효과를 발휘할 수 있는 컨테이너라고 생각된다. vector, deque와 차이점 원소접근 list는 []이나 at()같은 임의 접근자를 사용하지 못한다. 배열이 아닌 노드로 연결되어 있기 때문에 반복자 탐색을 통해 원소에 접근해야 한다. 그래서 총 N개의 원소를 가질때 O(N)만큼의 시간이 걸린다. 삽입,삭제 삽입하거나 지울때는 연결만 해주거나 끊어주면 되기 때문에 vector, deque와 다르게 상수시간대 밖에 걸리지 않는다. vector, deque에서 삽입하거나 지울때면 다른 원소들을 움직여야 하는데.. 2020. 9. 16.
(C++)Vector / Deque 시퀀스 컨테이너인 Vector와 Deque에 대해 차이점 위주로 알아보도록 하자. 공통점 둘은 정말 비슷한 컨테이너라 할 수 있다. 원소 추가, 삭제, 조회 , 연산 모두 같은 방식으로 호출하고 사용된다. - erase 원소를 삭제할때 erase를 호출하며 배개변수로 반복자포인터 하나가 들어갈 수도 있고 두개가 들어가서 한번에 여러 범위의 원소를 지울 수 있다. 주의 해야 할 점은 반복자 순회에서 해당 위치의 원소 삭제 후 해당 포인터가 삭제되므로 순회할때 예외적으로 처리 해줘야 한다. 아래는 해당 코드이다. int main() { vector vec; vec.push_back(1); vec.push_back(4); vec.push_back(1); vec.push_back(1); vec.push_back.. 2020. 9. 14.