C++
-
[C++] 문자열(string) 자르기C++ 2023. 6. 16. 03:08
1. string::substr()을 이용한 방법 string substr (size_t pos = 0, size_t len = npos) const; substr()은 문자 위치 pos에서 시작해서 len개의 문자까지 잘라서 리턴해준다. len에 값을 입력하지 않으면 문자열의 마지막까지 잘라서 리턴해준다. #include #include using namespace std; int main() { string str = "2023.06.16"; string year = str.substr(0, 4); string month = str.substr(5, 2); string day = str.substr(8); cout
-
C++ 반복자(iterator), vector와 list의 반복자 비교C++ 2021. 10. 18. 08:37
반복자(iterator) 어떤 컨테이너(자료구조)에 접근하든 동일한 방법으로 접근하기 위해서 제공되는 객체. 반복자는 원소의 위치를 갖고 있는 포인터와 비슷한 형태이다. 반복자를 이해하기 위해 먼저 벡터와 리스트의 접근 방식을 비교해보자. 벡터는 배열 기반으므로 연속된 메모리 공간을 가지고 있다. 그래서 인덱스 연산으로 임의 접근이 가능하고, 인덱스에 넣은 값을 증가시키는 방식으로 순회도 가능하다. 모든 컨테이너에 이런 간단한 방식으로 접근이 가능하다면 반복자는 필요하지 않을 것이다. 하지만 컨테이너들마다 접근 방식이 다르다. 그러면 리스트를 살펴보자. 하지만 리스트의 경우는 어떨까? 우선 연속된 메모리 공간을 가지지 않기 때문에 벡터처럼 인덱스 로 접근하는 것이 불가능하다. 즉 다른 방법으로 순회를 해..
-
[C++] 증감 연산자 오버로딩(전위 연산자, 후위 연산자)C++ 2019. 9. 4. 00:38
증감 연산자 증감 연산자는 피연산자로부터 값을 더하거나 빼기 위한 단항 연산자인데, 연산이 이루어지는 시점에 따라 전위 연산자, 후위 연산자로 나뉜다. 단순히 증감 연산자의 사용만이 목적이라면 연산이 이루어지는 시점만 알아도 사용이 가능하지만, 증감 연산자를 직접 오버로딩 하기 위해서는 내부가 어떻게 동작하는지에 대한 이해가 필요하다. 전위 연산자와 후위 연산자를 오버로딩한 아래의 예제를 보자. 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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 #include using namespace std..
-
[C++] 함수 포인터C++ 2019. 8. 27. 09:01
함수 포인터 함수도 변수와 마찬가지로 메모리 어딘가에 저장되어 주소를 가지고 있고, 이 주소를 담기 위한 포인터 변수를 선언할 수 있다. 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 28 29 30 31 #include using namespace std; int func() { return 5; } int goo() { return 10; } int main() { int(*fcnptr)() = func; // 함수 포인터의 선언(함수의 이름은 함수가 저장된 주소를 나타낸다) cout
-
[C++] Tuple (복수의 값 반환)C++ 2019. 8. 22. 17:51
Tuple 함수는 일반적으로 하나의 반환값을 반환하는데, tuple이라는 클래스를 이용해서 복수의 값을 반환할 수 있다. 예) 복수의 값을 튜플로 반환 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include #include using namespace std; tuple getTuple() { int a = 10; double d = 3.14; return make_tuple(a, d); } int main() { tuple my_tp = getTuple(); cout
-
[C++] const 위치에 따른 포인터의 의미C++ 2019. 7. 18. 11:53
포인터는 값을 변경하는 방식이 두가지가 있다. 1. 역참조를 통해 주소가 가리키고 있는 값을 변경 2. 포인터가 가리키는 주소를 변경 그렇기 때문에 각각에 대해서 const를 선언할 수 있는데, const의 위치에 따라 그 의미가 달라진다. 자료형 앞에 const 키워드가 붙는 경우 (상수를 가리키는 포인터 혹은 포인터가 가리키는 변수의 상수화라고 하기도 한다.) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include using namespace std; int main() { int value1 = 5; const int* ptr = &value1; int value2 = 6; ptr = &value2; // *ptr = 6; 불가능 } cs 이렇게 선언된 포인터는 가리키는 주소 값..
-
[C++] 참조 변수(Reference variable)C++ 2019. 7. 18. 11:45
참조 변수란? - 같은 메모리 주소에 다른 이름을 붙여 사용하는 것으로 대상을 별명으로 부르는 것과 유사하다. - 참조 변수는 참조자라고 부르기도 한다. - 참조 변수는 포인터와 달리 &변수명으로 선언한다. 참조 변수의 주소 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include using namespace std; int main() { int value = 5; int *ptr = nullptr; ptr = &value; int &ref = value; cout