벡터에서 순서 변경할때 사용
#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 |