iterator
[C++] 문자열 뒤집는 방법 string
출처 X 개인이 작성한 코드string은 vector형이므로 vector형 테스트 x1. algorithm 헤더 파일 내 reverse 함수 사용두 개의 오버로딩 함수가 존재한다 아래껀 일단 생략한다, && 임시값인 _Enable_if_execution_policy 플래그인데 용도를 잘 모르겠다. 이번에 쓰여질 함수 원형은 아래와 같다, First는 시작 지점의 포인터와 Last는 마지막 지점 // string 사용string s = "algorithm";cout // 배열 사용, 특이사항: const char*로 문자열 초기화 시 const이기 때문에 reverse 함수가 작동되지 않는다.끝 인덱스를 구하기 위해선 단순하게 총 길이에서 1만큼 빼주면 된다.char s[] = "algorithm";co..
[C++] Iterator (반복자)
개념 C++ 라이브러리는 반복자를 제공하는데 이것을 사용하면 라이브러리의 방식대로 자료구조를 액세스 할 수 있다. 따라서 라이브러리가 효과적으로 동작한다는 것을 보장 할 수 있다는 장점이 있다. 즉, 포인터와 상당히 비슷하며, 컨테이너에 저장되어 있는 원소들을 참조할 때 사용한다. 추상적으로 말하자면, 반복자란 컨테이너에 저장되어 있는 모든 원소들을 전체적으로 훑어 나갈 때 사용하는, 일종의 포인터와 비슷한 객체라고 할 수 있다. 알고리즘 마다 각기 다른 방식으로 컨테이너를 훑어가기 때문에, 반복자에도 여러가지 종류가 있게 된다. 성질 - 컨테이너와 컨테이너 안의 있는 요소를 구별 - 요소의 값 확인 - 컨테이너 안에 있는 요소들 간에 이동할 수 있는 연산 제공 - 컨테이너가 효과적으로 처리할 수 있는 ..
[C++] iterator (반복자) vector와 list의 비교
개념 어떤 컨테이너(자료구조)에 접근하든 동일한 방법으로 접근하기 위해서 제공되는 객체. 반복자는 원소의 위치를 갖고 있는 포인터와 비슷한 형태이다. 반복자를 이해하기 위해 먼저 벡터와 리스트의 접근 방식을 비교해보자. 벡터는 배열 기반으므로 연속된 메모리 공간을 가지고 있다. 그래서 인덱스 연산으로 임의 접근이 가능하고, 인덱스에 넣은 값을 증가시키는 방식으로 순회도 가능하다. 모든 컨테이너에 이런 간단한 방식으로 접근이 가능하다면 반복자는 필요하지 않을 것이다. 하지만 컨테이너들마다 접근 방식이 다르다. 하지만 리스트는 우선 연속된 메모리 공간을 가지지 않기 때문에 벡터처럼 인덱스 로 접근하는 것이 불가능하다. 즉 다른 방법으로 순회를 해야 한다. 리스트는 현재 가리키고 있는 노드와 다음 노드의 주소..
C++ STL 설명과 for-range 기반 loop
STL(Standard Template Library)은 C++ 내 템플릿 클래스들의 집합이며, 개발자에게 도움줄 수많은 자료구조와 함수들이 구현 되어있다. 기본 4가지로 구성 되어있다. 알고리즘 헤더 파일 내 (정렬, 탐색 컨테이너 (선형,비선형 자료구조) 예) , 함수 이터레이터 (반복자) 모든 컨테이너들은 이를 지원하지 않음. STL은 기본적으로 범위 기반 for문을 돌려 원소에 접근할 수가 있다. 핵심은 4번에 있다, 이를 실행할 수 있는 조건이 바로 .begin() 함수다 즉 첫 원소의 주소를 이터레이터 형태로 반환하는 함수다. 예) for(auto item : 컨테이너 이름) 여기서 한 가지 의문점이 들 수도 있는데 const auto : const auto& : auto : auto& : 위..
이터레이터 Iterator (반복자)
컨테이너에 저장되있는 원소들을 공통적인 방법으로 하나씩 접근할 수 있게 해줌. 모든 컨테이너들이 다 같은 방법으로 반복자 사용 가능. 각 타입에 ::iterator 또는 ::const_iterator 를 뒤에 붙여주면 사용이 가능하다. vector 컨테이너의 반복자 itr vector::iterator itr; vector 컨테이너의 const한 반복자 citr vector::const_iterator citr; 포인터와 비슷하게 사용한다. 간접 참조 가능) itr = v.begin() + 2 에서 *itr 간접 참조를 하면 세번째 원소 값이 리턴된다. iterator 와 const_iterator 의 차이 const_iterator 는 반복자가 가리키는 원소의 값을 변경하지 못한다. 반복자 값이 변경되..