C++
-
struct, struct vector, typedef, usingC++ 2021. 8. 28. 13:47
struct(구조체)여러 개 변수 묶어서 쓰고자 할 때 사용클래스와 비슷하게 멤버 변수, 멤버 함수를 가짐 (public)#include struct Rectangle { int width; int height; int area() { return width * height; } int area(int extraWidth, int extraHeight) { return (width + extraWidth) * (height + extraHeight); }};int main() { Rectangle rect = {9, 9}; std::cout Default area: 81Area with extra space: 187 ** C++에서는 그..
-
findC++ 2021. 8. 28. 13:41
string find문자열 내 검색찾았을 경우 첫 번째 원소의 인덱스, 없을 경우 string::npos 리턴문자열.find("{찾고자 하는 문자열}", {검색 시작할 위치=0})#include #include int main() { std::string str = "love for real"; std::cout algorithm find벡터 등 컨테이너 내 검색찾았을 경우 첫 번째 원소의 반복자, 없을 경우 컨테이너 끝(end()) 리턴find({검색 시작할 위치}, {검색 종료할 위치}, {찾고자 하는 값})#include #include #include int main() { std::vector birth = {94, 7}; int date = 28; // 있는지 확인..
-
mapC++ 2021. 7. 11. 22:44
mapkey-value 쌍으로 데이터 저장, key 값 중복될 경우 기존 값 덮어 씀.기본적으로 key 값 기준으로 자동 정렬(오름차순)red-black tree 기반 => 탐색/삽입/삭제 연산 O(logn) 참고로, 해시 기반으로 자동 정렬되지 않는 unordered_map의 경우 탐색/삽입/삭제 O(1)이다. map.find(key)map에 해당 키 값 존재하는지 찾고, 있으면 해당 원소의 반복자, 없으면 end() 리턴. #include #include #include int main() { std::map m; m.insert({"hj", 728}); std::cout second first second 728909hj: 728yb: 909
-
입출력 조작자, 포맷 함수C++ 2021. 7. 11. 02:44
입출력 조작자 (Manipulator)매개변수 없는 조작자: endl, hex, dec, showbase 등매개변수 있는 조작자: setw, setfill, setprecision 등 (iomanip 헤더 파일 필요)#include #include int main() { double pi = 3.141592; std::cout ** 소수점 자르기 **setprecision(n)은 가장 앞에서부터 유효한 숫자 n개를 자르는 메서드.fixed와 함께 써야 소수점 아래 자리수를 고정시킬 수 있음. 포맷 함수 (Format function)C의 printf, 파이썬의 f-string 같은 기능format 헤더 파일 필요 C++20부터 사용 가능 #include #include int main() {..
-
stoi() - string to intC++ 2021. 7. 6. 03:29
stoi()string형 숫자 -> int로 변환string 헤더 파일 필요 같은 방식으로 stof(string to float), stod(string to double) 등 사용 가능.#include #include int main(){ std::string str1 = "7", str2 = "10"; int result = stoi(str1) * stoi(str2); std::cout ** 세그 폴트 발생 주의! **stoi()의 인자 값에 문제가 있을 경우 segmentation fault가 발생하므로, 웬만하면 try-catch로 예외 처리해서 사용할 것.e.g. 숫자가 아닐 경우(invalid_argument), int 범위 밖일 경우(out_of_range) 등 그 외.- ..
-
멀티스레드 환경에서 vector 사용, pairC++ 2021. 7. 6. 03:22
vector동적 배열 컨테이너배열처럼 메모리 연속적으로 할당함#include std::vector v1; // 빈 벡터 생성std::vector v2(10); // 원소 10개 가진 벡터 생성 (0으로 초기화)std::vector v3(10, -1); // 원소 10개 모두 -1로 초기화한 벡터 생성std::vector v4 = {1, 2, 3}; // 원소 직접 초기화 ** 멀티스레드 환경에서 vector 사용하는 경우 **잘못된 인덱스 접근으로 세그 폴트 발생하는 걸 막기 위해 반드시!resize(n) 또는 resize(n, 초기 값)으로 사이즈 정해놓고 사용할 것! 그리고 push_back() 사용은 되도록 지양하자.계속 뒤에 붙이다가 기존 용량 초과하면 기존의 두 배 만큼 늘려서 재할당 하게 됨...
-
cin.ignore() - cin, getline 동시에 사용할 때C++ 2021. 7. 6. 03:20
cin.ignore()버퍼 비워주는 역할cin으로 정수 등을 입력 받고 난 후, getline()으로 또 입력 받는 경우에 사용.이때 cin.ignore()로 버퍼를 비워주지 않는 경우, cin 처리하고 남은 개행문자가 getline()에 들어가게 된다.#include #include int main() { std::string s; int n; // 입력 값이 차례대로 5\n10\n20일 때. // 정수형 변수 n에는 입력한 숫자만 저장되고, \n은 버퍼에 그대로 남음 std::cin >> n; std::cout > n; std::cout 테스트 프로그램 작성 시, 루프 도는 과정에서 잘못 들어 온 입력을 처리할 때 사용할 수도 있다.std::cin.clear()..
-
stackC++ 2021. 6. 1. 23:23
Stack (STL) LIFO (Last In First Out) : 마지막에 들어간 데이터가 가장 먼저 나옴 stack 헤더파일 불러오기 #include 빈 stack 생성 stack name; e.g. stack s; 데이터 들어있는 stack 생성 stack s({ 1,2,3 }); size() - stack 내 원소 수 반환 n = s.size(); top() - 맨 위에 있는 원소 반환 n += s.top(); pop() - 맨 위에 있는 원소 삭제 s.pop(); push(x) - stack의 맨 위에 x 추가 s.push(1); s.push(x); empty() - stack이 비어있으면 true, 아니면 false 반환 while (!s.empty()) { ... }