본문 바로가기

All250

[C++] 벡터(Vector)와 리스트(List) 벡터(Vector) 벡터(vector)는 기본적으로 동적 배열이다. 즉 매번 size를 확인하며 배열이 꽉 차게되면 자동으로 capacity를 늘린다. 물론 이 과정엔 메모리를 해제했다가 다시 할당하고 값을 복사하는 오버헤드가 포함되어 있다. 또한 메모리의 잦은 할당은 fragmentation을 초래한다. 따라서 사용 전 reserve를 통해 어느정도 capacity를 정하는 것이 좋다. 배열이기 때문에 인덱스를 지원하며 임의의 요소에 상수 시간으로 접근이 가능하다.(물론 인덱스를 알고 있다고 가정할 때) 하지만 임의의 요소가 삭제되거나 추가될 때 요소의 순서를 유지하기 위해 백터는 재정렬을 해야하는 오버헤드가 있다. 따라서 맨뒤에 요소를 삽입하거나 삭제하는 연산이 아닌 중간에 삽입 삭제가 빈번하게 발생.. 2019. 11. 8.
[C++ STL] <algorithm> std::search() 함수 안녕하세요. 오늘은 헤더의 std::search() 함수에 대해 알아보겠습니다. template ForwardIterator1 search (ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); search 함수는 [first1, last1) 범위의 요소들 중 [first2, last2) 범위의 요소들과 순차적으로 모두 일치하는 요소들을 찾아 해당 요소의 시작 지점을 가리키는 반복자를 반환합니다. 예를 들어 "hello world"에서 "world" 를 포함하는 첫 위치를 알고 싶을 때 사용할 수 있습니다. "world"가 존재한다면 첫 문자인 'w'를 가리키는 반복자를 반환합니다... 2019. 11. 7.
[C++ STL] 특정 값 제외 컨테이너 복사 std::remove_copy() 함수 안녕하세요. 오늘은 헤더의 std::remove_copy() 함수에 대해 알아보겠습니다. remove_copy 함수는 std::copy 함수와 유사한 동작을 하는 함수입니다. 4번째 인자를 추가로 받는 것을 제외하면 copy 함수와 동일한 동작을 합니다. template OutputIterator remove_copy (InputIterator first, InputIterator last, OutputIterator result, const T& val); remove_copy 함수는 [first, last) 범위의 요소들 중 val과 같은 요소를 제외하고 result 위치에 순차적으로 복사합니다. first, last [first, last) 범위의 컨테이너의 요소들을 복사합니다. result 복사한.. 2019. 11. 6.
[C++] std::transform() 함수 및 back_inserter 함수에 대해 알아보자 안녕하세요. 오늘은 헤더에 정의되어 있는 STL 알고리즘인 std::transform() 함수에 대해 알아보겠습니다. transform() 함수는 3개의 반복자와 1개의 단항 연산 함수를 매개변수로 갖습니다. ( 바이너리 연산 함수를 인자로 갖기도 하지만 여기선 단항 연산 함수만 다루겠습니다. ) template OutputIt transform( InputIt first1, InputIt last1, OutputIt d_first, UnaryOperation unary_op ); : transform() 함수는 [first1, last1) 범위의 각 요소마다 함수를 호출하고 그 결과를 d_first 위치에.. 2019. 11. 4.
[PHP] 특정 문자열 포함하는지 확인하는 strpos 함수 안녕하세요. 오늘은 특정 문자열을 포함하는지 확인할 때 사용할 수 있는 strpos 함수에 대해 알아보겠습니다. strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) : int 함수 원형은 위와 같습니다. $str = "hello, woohyeon"; 위 문자열이 "woohyeon"을 포함하는지 알고 싶다면 아래와 같이 함수를 사용합니다. PHP 7.1.0 버전부터는 3번째 인자인 index 사용이 가능합니다. index 사용 시 [0] 위치부터가 아닌 index 위치부터 탐색합니다. ( 음수일 시 문자열의 끝부터 시작합니다.) 아래 예제는 $beginDate 문자열에서 "20"을 [2] 위치부터 탐색하므로 두 번째 "20" 시작 위치인 2를.. 2019. 11. 4.
[C++] std::equal 함수로 간단하게 회문 판별 함수 구현해보기 / palindrome 안녕하세요. 오늘은 C++ 라이브러리 함수를 이용해 간단하게 단어의 회문 여부를 판별하는 함수를 작성해보겠습니다. 회문(Palindrome)이란? 'civic', 'eye', 'level', 'madam', 'rotor' 와 같이 거꾸로 읽어도 철자가 같은 단어를 말합니다. 헤더의 std::equal 함수와 멤버 함수인 std::string::rbegin 함수를 사용합니다. bool is_palindrome(const std::string& s) { return std::equal(s.begin(), s.end(), s.rbegin()); } equal 함수는 2개의 대상을 비교하여 참 또는 거짓을 반환합니다. 비교 대상은 [ s.begin(), s.end() ) 범위의 대상1과 s.rbegin()으로 .. 2019. 11. 2.