C++

· C++
sort() 는 배열 등 컨테이너들의 요소를 정렬하는 함수이다. 보통 array나 vector를 정렬할 때 쓰이며 O(nlogn)의 시간복잡도를 가진다. sort()의 parameter는 3가지인데 이 중 2개는 필수로 넣어야한다. 즉 sort() 함수는 두 가지 형태로 오버로딩 되어 있다. template void sort(T start, T end); template void sort(T start, T end, Compare comp); 또한 범위는 [first, last) 이다. 즉 크기가 5인 배열을 sort하고 싶다면 sort(a, a+5) 라고 하면 된다. 구체적인 사용 예시는 아래 코드를 확인하자. #include using namespace std; int main() { int a[5]..
· C++
배열을 복사할 때 for loop, memcpy(), copy() 등 여러가지 방법이 존재한다. 그 중 copy() 함수를 통해 array와 vector에서 깊은 복사를 할 수 있기 때문에 copy()에 대해 정리해보려 한다. 다음은 벡터 origin을 target에 copy() 하는 코드이다. #include using namespace std; int main() { vector origin = {0, 1, 2}; vector target(3); copy(origin.begin(), origin.end(), target.begin()); for (int i:origin) cout
· C++
배열을 초기화할 때 int a[10] = {0, }; 과 같이 초기화하기도 하고 fill() 이나 memset() 을 사용하기도 한다. 위 방법들의 사용법, 장단점을 정리해보자. 1. std::fill() fill()은 O(n)의 시간복잡도를 가지며 fill (first, last, val) 으로 초기화한다. 모든 값으로 초기화 가능하며 [first, last)까지 val로 초기화된다. 일부 값만 초기화할 수도 있긴하다. 아래 코드는 배열 a[10], b[10][10] 의 모든 값을 0으로 초기화하는 과정이다. int a[10]; int b[10][10]; fill(&a[0], &a[10], 0); fill(&b[0][0], &b[9][10], 0); a[10] = { 0, 0, 0, 0, 0, 0, 0..
· C++
c_str() 함수는 string class의 멤버 함수이다. c언어에는 string을 '문자의 배열' 인 문자열로만 표현 가능하다. c++에만 존재하는 string 자료형을 c_str() 을 통해 c style의 문자열로 변환하는 함수가 c_str()이다. string CPP = "hello"; char C[6] = "hello"; 두 문자열 모두 cout에서 정상적으로 출력되어 hellohello 가 출력된다. cout
· C++
C++ 표준 라이브러리는 비트 플래그 조작을 돕는 std::bitset을 제공한다. std::bitset을 사용하려면 필요한 비트 수를 나타내는 std::bitset 변수를 정의해야 한다. #include std::bitsetbits(0x3); std::bitset 변수 bits는 0000 0011 이 된다. std::bitset은 4가지 주요 함수를 제공하는데 1. test() : 비트 상태를 알려준다. 2. set() : 비트를 켠다. 3. reset() : 비트를 끈다. 4. flip() : 비트를 뒤집는다. 위 함수들을 활용한 코드가 다음과 같다. #include #include using namespace std; int main(){ bitsetbits(0x03)// 0000 0011 bits..
· C++
fabs() : 절댓값 반환 + abs()는 절댓값을 반환하는 stdlib 헤더파일의 메서드이다. epsilon : 0.0000001 pow : 제곱 sqrt : 제곱근
· C++
매직 넘버를 사용하는 것은 좋지 못한 습관이다. 매직 넘버란 아래 코드와 같이 한 반의 최대학생 수를 30으로 나타내는 것이다. int maxStudents = numClassrooms * 30; 매직넘버 대신 심볼릭 상수를 정의하는 것이 바람직한데 심볼릭 상수는 상수 리터럴 값이 지정된 이름이다. 그 방법은 두 가지 있다. 1. 매크로를 사용한다. (bad) #define MAX 30 매크로를 사용하면 전처리기가 MAX를 발견하면 30으로 대체한다. 여기에는 두 가지 문제가 있다. 첫 번째로, 매크로를 사용한 심볼릭 상수는 디버거에 표시되지 않는다. 두 번째로, #define 된 값은 항상 파일 스코프(범위)에 있으므로 나중에 #define된 값과 충돌할 수 있다. 2. const 변수를 사용한다. (..
· C++
이스케이프 시퀀스는 \ (back slash)로 시작한 다음 문자 또는 숫자가 나온다. 대표적으로 사용하는 \n 또한 이스케이프 시퀀스다. 다양한 이스케이프 시퀀스들이 존재하는데 다음과 같다.
· C++
C++에서 자료형을 변환하는 방법에는 크게 1. 묵시적 형 변환 2. 명시적 형 변환 3. Cast Operator 이 중 Cast Operator https://doitnow-man.tistory.com/entry/C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%90%98%EA%B8%B0-8-type-casting-cast-operator [C++ 개발자되기] 9. type casting (cast operator) >>[C++ 관련 모든 글 보기] 1. Type Casting이란? 변수의 type을 강제로 다른 type으로 변경하는 것을 말합니다. 2. 왜 필요 한가? C 나 C++ 변수의 type을 변경 해서 처리하는 경우가 비번 하게 발생합니다. doitnow-man.tistory.com
· C++
bool 변수에 true 혹은 false 값을 저장해도 cout 으로 출력할 때는 1 혹은 0 으로 출력한다. 따라서 아래 코드와 같이 boolalpha를 사용해 bool 값을 true/false 로 출력할 수 있다. noboolalpha를 사용해 다시 1/0으로 출력할 수도 있다. #include "iostream" #include using namespace std; int main(void) { bool b = true; cout
20240619
'C++' 카테고리의 글 목록 (2 Page)