[C++] 코테 오답노트

Hyunwoo Lee·2021년 10월 22일

Reference variable

_ STL 컨테이너를 인자로 넘겨줄 때는 Reference variable로 넘겨주자

배열을 사용할 때 행렬의 순서를 헷갈리지 말자

long long 타입을 이용할 때는 계산 결과가 확실히 long long인지 확인하자
(long long A = B + c -> long long A = (long long)B + C)

string str
str.c_str()을 통해 const char* 값으로 변환 가능
음수의 mod(%)연산의 결과값은 음수
itoa 대신 to_string 함수를 이용 가능

vector 컨테이너를 초기화 하는법
vector<int> vec(SIZE, NUMBER);
SIZE크기만큼 공간을 확보하고 NUMBER로 초기화시킨다.
2-D vector의 경우
vector<vector<int>> vec (ROW, vector<int> vec(COL, NUMBER);
로 선언하면 된다.

벡터의 가장 0번째 인덱스를 지우기 위해선 erase 멤버함수를 사용한다.
vec.erase(ret.begin())
string의 부분 string을 가져올 떈 substring을 이용한다.
ret.substr(0, 15);

stringstream을 이용하면 쉽게 풀 수 있다.

https://programmers.co.kr/learn/courses/30/lessons/42888

map 컨테이너

map<int, string> hash
hash.insert({int, string});

if (hash.count(int){ hash[int] = "stirng"
count함수는 특정 값이 포함된 횟수를 리턴한다.
map에서 키 값은 고유하므로 항상 0, 1을 리턴한다.
따라서 count함수를 이용해 key값의 유무를 알 수 있다.

키-벨류를 추가/수정할 땐 포함 여부를 조사할 필요가 없다.
hash[int] = "stirng"
라고 쓰면 자동으로 추가/수정이 이루어진다.

string함수들

C++에선 cstring
C에선 string.h에 포함된다.

strtok

strtok(char* string, char* spliter)
string에서 spliter에 포함된 문자가 나오기 직전까지의 문자열을 반환한다.
spliter에 " "를 넣으면 어절별로 나눌 수 있다.
만약 2번째 단어를 구하고 싶다면 string 자리에 NULL을 넣는다.
static하게 초기화되어 있으므로 다음 어절을 찾아낸다.
더이상 나눌 수 없으면 NULL을 반환한다.

strcmp

cstring에 포함된다.

profile
10분만 쉬어요

0개의 댓글