STUDY/C++(15)
-
C++ - Stringstream
The stringstream class is extremly useful in parsing input. To use stringstream, we need to include sstream header file. StringStream 은, 공백과 \n 을 제외한 문자열을 빼내는데 유용함. : Read something from the stringstream object. 예제 1. geeks for geeks geeks 를 space 로 나눈 count 값 ! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 // Example program #include #include #include using namespace s..
2022.08.23 -
unordered_map vs map in C++
map (like set) is an ordered sequence of unique keys whereas in unordered_map key can be stored in any order, so unordered. The time complexity of map operations is O(logN) while for unordered_map, It is O(1) on average. Let us see the differences in a tabular (표로 산출된) form. # About unordered_map unordered_map is an associated container that stores elements formed by the combination of key-value..
2022.08.22 -
C++ min , max, index 구하기
HEADER : #include 일일히 for 문을 쓰지않아도, algorithm 라이브러리에 있는 min/max_elements를 사용하여 한 줄로도 간단하게 최대값을 구할 수 있다! 또한 해당 최소/최대 값의 index 값을 구할 수 있다. 이는 결과값에서 - v.begin()을 빼주면 된다. min/max_element의 결과로, 최대값을 가리키는 반복자를 반환하기 때문에 * 연산자를 사용한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include #include #include using namespace std; vector nums; int main() { nums = {123,213,444,455,666,7..
2022.08.21 -
C++ - 2차배열 / 동적할당 패턴 연습 (+입력 정리, vector 인자로 넘길때)
입출력하고 배열에 우선 익숙해져야겠다..... 1. cin / cout 을 쓰는걸로하자. cin / cout 은 C++ 의 String 을 쓸수있다. 근데 printf/scanf는 저걸 못씀. 대신, cin / cout 쓰려면 조건이 몇가지 있다. ios::sync_with_stdio(0); // C++ stream과 C stream의 동기화를 끊어서 프로그램 수행시간 늘리도록 하는기능. cin.tie(0); // cin 명령을 수행하기 전에 cout 버퍼를 비우지 않도록 하는 코드. 이 2개를 같이 써야함. 입출력이 작을때는 상관없지만, 양이 많을때 ( 출력 100만번 / 입력 100만번 ) 지연되어 시간초과 발생할 수 있다. 그리고 , 이걸 쓸때 cin / cout 하고, printf / scanf ..
2022.08.19 -
(C++) vector - accumulate, clear/erase, unique(+sort)
# accumulate HEADER : #include C++ 배열의 합을 구하는 함수이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include #include using namespace std; int main() { vector v{1,2,3,4,5,6,7,8,9,10}; int sum = accumulate(v.begin(), v.end() ,0); // accumulate( first iter, lase iter, initial val of sum ); vector v2 = { 1000000000, 2000000000 }; // long long int long long sum = accumulate(v.begin(), v.end(), 0LL); return 0; } Co..
2022.08.18 -
C++ - vector of pairs / vector of vectors
1. vector of pairs vector 와 pair를 섞어 쓰는 방법이다. 연습이 필요하다 ㅠㅅㅜ 단순하게 생각하면서 익히자...! // C++ program to demonstrate vector of pairs ! #include #include using namespace std; bool sortbysecond(const pair &a, const pair &b) { return (a.second < b.second); } int main() { vector vec; int arr[] = {10,20,5,40}; int arr1[] = {30,60,20,50}; int n = sizeof(arr)/sizeof(arr[0]); for(int i =0; i < n; i++) { // assig..
2022.08.09 -
C++ - pair ( aka. vector / typedef / sort )
* Pair 란? pair는, 두개의 값을 하나로 묶어주는 역할을 하는 struct로 데이터 쌍(pair)을 표현할 때 사용한다. 주로 vector로 묶어 2차원 배열처럼 사용하거나, 좌표를 표현할 때 사용된다. 헤더는 algorithm , vector 에 utility 헤더가 포함되어 있기 때문에, 따로 추가 안해줘도 된다. pair의 기본 형태는 pair p_name; 으로 정의해준다. pair는 따로 초기화 하지 않고, make_pair 를 사용해 필요할 때 원소를 삽입하는 방식으로 사용한다. * Pair 멤버 함수 p.first - pair의 첫번 째 인자를 반환한다. p.second - pair의 두번 째 인자를 반환한다. make_pair(val1, val2) - val1, val2를 가진 p..
2022.08.08 -
C++ - 수식 함수들
Header : , 1. pow ( 제곱 함수 ) double pow ( double a, double b ) pow(10,2) // -> 10의 제곱. 2. sqrt ( 제곱근 함수 ) double sqrt ( double x ) sqrt(4) // -> 2 3. ceil ( 올림 ) ceil(3.14) // -> 4 4. floor ( 내림 ), floor ( a+0.5 ) -> 반올림 floor(1.89) // -> 1 floor(1.89+0.5) // -> 2 헤더 cstdlib 에 있는 함수들 . 1. int abs ( 절대값 ) int abs(int num); long int abs(long int num); long long int abs(long long int num); 2. min, m..
2022.08.07 -
C++ - deque
Deque는 vector 의 단점을 보완하기 위해 만들어진 컨테이너라고 한다. 동일하게 배열 기반의 구조이고, 벡터의 단점인 동적 할당 과정을 보완했는데, 벡터처럼 새로 재할당 후 원소를 복사하는것이 아니고, * 새로 일정한 크기의 메모리 블록을 할당 함으로써 이전 원소를 복사하지 않는다. * 데이터의 삽입 삭제를 front, back에서 할 수 있다. * deque 중간에 원소를 삽입하거나 삭제 가능하다. (push_back, push_front, pop_back, pop_front.... 엥 다 할수 있잖아..?) 연습용으로 아래 포스팅의 다양한 예제들 한번씩 입력해보자... ! # 앞뒤 값 삽입 그리고 역순 출력 # #include #include using namespace std; int mai..
2022.08.07 -
c++ - stack/queue
c++ stack의 헤더는, #include 이다. stack은 LIFO(Last In First Out) 후입 선출 ! 근데 stack 은 코테에서 많이 안쓰는 것 같다. 왜냐면 stack 의 단점이 있기 때문인데, vector처럼 [] 해당 요소 접근이 불가하다는 점 때문인듯. stack 선언 : stack stk; stack 삽입/삭제 : push(i) , pop(); -> 스택의 pop은 맨 위의 값을 pop한다. 큐의 pop은 맨 앞의 원소를 삭제한다. stack의 꼭대기값, 비었는지 확인하는 함수 : top(), empty() queue 도 쓰는 것 비슷하다. 근데 queue는 확실히 안쓰고, deque를 주로 쓴다고 한다. 왜냐면 보니까 deque()에 왠만한 함수 다 있다 ! #includ..
2022.08.07