벡터에서 순서 변경할때 사용

 

#include <algorithm>

vector<TYPE> v;
reverse(v.begin(), v.end());

여기서 v.begin()과 v.end()는 해당 컨테이너의 반복자를 반환한다.

v.begin() : 첫번째 요소의 반복자

v.end() : 마지막 다음의 요소 반복자

즉, reverse는 첫번째 요소의 반복자와 마지막 +1번째 반복자를 전달인자로 넘겨야 한다.

 

 

반복자(iterator)와 포인터 차이

 

포인터도 반복자와 마찬가지로 ++, * 등으로 요소 접근 및 연산이 가능하다.

결정적인 차이점은 만약 포인터가 10번 주소를 가르키고 있을때

int단위라면 10(0번째 요소), 14(1번째 요소), 18(2번째 요소)...과 같은 정적인 요소를 가르킬 수 있지만

만약 컴퓨터 구조상의 이유로 컨테이너가 10(0번째 요소), 3240(1번째 요소), 7782(2번째 요소)...와 같이 연속적으로 메모리에 올라가있지 않았다면 포인터로는 접근 할 수 없기 때문이다.

아마 배열은 연속적으로 메모리에 올라가겠지만 컨테이너의 구조는 다를 수 있기 때문일 거다.

 

 

배열로 점수 쌓기(아이디어 기억하기)

 

#include <iostream>
using namespace std;

int main(){
    short n[26] = {0};
    short t, cnt = 0;
    for(short i = 0; i < 10; i++){
        cin >> t;
        t = t % 26;
        n[t]++;
    }
    for(short i = 0; i < 26; i++){
        if(n[i] != 0) cnt++;
    }
    cout << cnt;
}

어떤 입력이 왔을때 각 알파벳을 몇 번 사용된지 알 수 있게 하는 코드이다.(정확하지 않음.)

여기서 중요한건 배열로 각 알파벳에 공간(배열)을 할당하여 0부터 시작하여 그 알파벳이 있을때마다 점수(배열 요소의 값)를 올려주는 식이다. 처음 봤을땐 어려웠지만 굉장히 유용한 알고리즘일 것 같다.

 

 

공백포함 문자열 입력

 

1. string 사용시 공백포함 문자열 입력 받기

string str;
getline(cin, str);​

 

2. char 사용시 공백포함 문자열 입력 받기

char ch[100];
cin.getline(ch, 100);

'algorithm(c++)' 카테고리의 다른 글

달팽이는 올라가고 싶다  (0) 2023.04.24
물통 옮기기  (0) 2023.04.21
분수 찾기 알고리즘 아이디어  (0) 2023.04.12
그룹단어 체커 아이디어  (0) 2023.03.31
c++ 소수점 출력 포맷 지정 2가지 방법  (0) 2023.03.15

+ Recent posts