본문 바로가기

PL

(103)
[C++] string to int stoi, stof, stol, stod 함수에 대해서 (string to int) ▼ C++11 부터 아래 함수들을 사용할 수 있습니다. stoi = string to int stof = string to float stol = string to long int stod = string to double 아래처럼 다른것들도 있지만 많이 사용하진 않아서요. 위에 4개(stoi, stof, stol, stod)에 대해서만 다루겠습니다. stoul = string to unsigned int stoll = string to long long stoull = string to unsigned long long stold = string to long double 2. C++ stoi, stof, stol, s..
[C++] vector 1) vector container 란? vector 컨테이너는 자동으로 메모리가 할당되는 배열. 이라고 생각하면 될거같습니다. 저는 C를 하다가 C++로 넘어와서 이렇게 vector 컨테이너를 처음 접하고 정말 소름이 돋았었습니다. 자동으로 메모리를 할당해주고 알아서 끝에 들어가주고 알아서 삭제도 해주고,,,, 정말 효자 컨테이너입니다. 모든 STL 이 그렇듯. template를 사용하기 때문에 데이터 타입은 마음데로 넣을 수 있습니다. 간단하게 그림으로 구조를 먼저 보고 넘어가겠습니다. (약간 자료구조 스택과 비슷한 느낌입니다.) 이러한 구조를 가지고있으며, 맨 뒤쪽에서 삽입과 삭제가 가능합니다. 중간에 값을 삽입 하거나 삭제할 수도 있습니다. 하지만 배열기반이으로 삽입 삭제가 빈번하게 일어난다면 비..
[C&C++] 자료형 C/C++ 에 존재하는 모든 자료형 개념 총 정리 - Easy is Perfect 알고리즘 문제 풀이 시에, 모르는 게 많이 생기게 됩니다. 특히 자료형에 대한 게 많이 헷갈리는 경우가 존재합니다. 어떤 문제는 long long 자료형을 써야할 때가 있고 (int 형의 범위를 초과해서) melonicedlatte.com [C++ 정리] 자료형의 크기 및 범위 | Opendocs __int64 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 myblog.opendocs.co.kr
[C++] string [C++] string 클래스, 문자열에 대해서 (총정리) 안녕하세요 BlockDMask 입니다. 오늘은 C++의 std::string 클래스(문자열)에 대해서 세세 하게 알아볼것 입니다. 예전 글을 보다가 제가 작성한 이 문서를 보게 되었는데요, 너무 내용이 빈약하다고 blockdmask.tistory.com
[C++] tuple tuple은 기존의 std::pair를 확장한 자료형입니다. std::pair가 2개의 값을 한 번에 저장할 수 있지만 tuple은 제한이 없습니다. 기존의 C++ TR1에서는 10개까지 저장이 되었습니다. tuple은 2개 이상의 값을 한 번에 반환하거나 전달할 때 사용하면 유용합니다. 물론 구조체를 통해서 가능한 방법이긴 하지만 구조체는 정의를 해서 사용해야 합니다. tuple을 이용하면 간단하게 다양한 값들을 한 번에 전달이 가능하게 됩니다. 먼저, std::tuple 안의 안에 필요한 변수 타입들을 작성합니다. typedef로 해당 타입을 OddOrEven 타입이라고 명명했습니다. tuple 변수에 값을 넣을 때는 std::make_tuple()을 사용하면 됩니다. 해당하는 위치에 해당하는 값을 ..
[C++] string::find() (문자열에서 특정 문자 찾기) string::find() string 클래스의 멤버함수로서, str.find("찾는 문자") 로 사용 반환값은 찾는 문자의 첫번째 인덱스값 찾는 문자가 없을 경우는 string::npos를 리턴한다. (npos는 no position으로 쓰레기값 나옴) [C++] string::find() (문자열에서 특정 문자 찾기) string::find() string 클래스의 멤버함수로서, str.find("찾는 문자") 로 사용 반환값은 찾는 문자의 첫번째 인덱스값 찾는 문자가 없을 경우는 string::npos를 리턴한다. (npos는 no position으로 쓰레기값 나옴. lollolzkk.tistory.com
[C] 배열 초기화( memset, calloc ) 1. memset 2. calloc 3. 기본 C 언어 코딩 도장: 36.2 배열을 0으로 초기화하기 이번에는 배열의 모든 요소를 간단하게 0으로 초기화해보겠습니다. 자료형 배열이름[크기] = { 0, }; array_init.c #include int main() { int numArr[10] = { 0, }; // 배열의 요소를 모두 0으로 초기화 printf("%d\n", nu dojang.io [C] malloc, calloc, realloc을 이용한 메모리 동적 할당 동적할당을 사용하는 이유는 무엇일까? c언어의 메모리 구조에 대해서 알고 있다면 동적할당을 사용하는 이유를 쉽게 알 것이다. 2014/06/26 - [Programming/C언어] - [C] 스택(Stack), 힙(Heap), 데이..
[C & C++] 2차원 배열과 포인터 10. 2차원 배열 출처 http://coolprogramming.springnote.com 저작자 NetGong 배열은 같은 자료형의 연속메모리라고 했습니다. 기억하시죠?! 그리고 앞에서 배운 배열은 모두 1차원 배열이라고 합니다. []연산자 하나 blog.daum.net C언어 2차원배열(이중포인터) 동적메모리할당 * 동적메모리 할당에 대해서는 이미 몇번의 포스팅에서 이야기 한적이 있습니다. 이번 포스팅에서는 2차원... blog.naver.com
[C++] template, header, class 그런데 템플릿으로 클래스를 만들 경우는 C++에서 주의할 점이 있는데 h 파일과 cpp 파일로 나누어 선언, 정의할 경우 이 클래스를 사용하는 파일에서는 h 파일뿐 아니라 cpp 파일도 #include해줘야 합니다. 그게 아니라면 h 파일에 선언과 정의를 몰아서 다 하거나... 이게 C++에서 발생하는 결함 중 하나입니다. [C++ 강좌] 065 - 템플릿의 작성 (5) - 클래스 템플릿, 클래스 템플릿의 typedef 오랜만이예요.(아마도)저번 글까지가 함수 템플릿에 관한 내용이었는데, 이번엔 클래스 템플릿에 대한 내용... blog.naver.com
[C++] template
[C++] vector, reserve(), resize() reserve()는 공간이 예약된다. 배열을 만들때 int array[크기] 하는것과 같다. 만약 앞으로 데이터가 자주 추가된다면 벡터가 가득 찼을때 스스로 공간을 늘리지 않기 때문에 성능을 더 향상할 수 있다. 만약 전부 찬상태에서 또 집어넣으면 늘어난다. resize()는 공간 예약 + 안의 모든 공간을 특정한 값으로 채운다. 변수를 만들때 쓰레기값이 없게 하기위해 NULL로 초기화 하는것과 비슷하다. ex) int array[10] = {0 ,} 현재보다 큰 공간을 예약하면 그만큼 더 집어넣는다. ex) 5개가 들어있는 상태에서 resize(10)하면 5개가 더들어감 -> 5 + 5 = 10 용량이 딱 정해져 있다. 더들어 오게 된다면 버려지게 된다. vector resize()와 reserve()..
[C] 매개변수 배열의 크기 실제로 포인터 변수는 항상 4 / 8 바이트의 정해진 크기를 갖습니다. 여기서 4 / 8 바이트는 long형과 마찬가지로 32비트 운영체제에서 4바이트, 64비트 운영체제에서 8바이트를 의미합니다. 구름EDU - 모두를 위한 맞춤형 IT교육 구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/ edu.goorm.io 배열을 함수의 매개 변수로 사용할 때 주의할 점 : C 언어 관련 전체 목차 http://blog.naver.com/tipsware/2210108319691. 일반 변수를 함수의 매개 변수... blog.naver.com 포인터가 어렵나요? (네) ..
[C & C++] 함수에서 배열 매개변수 사용하기 C 언어 코딩 도장: 64.1 배열 매개변수 사용하기 64 함수에서 배열 매개변수 사용하기 함수에서 배열을 매개변수로 사용하면 연속된 값을 전달할 수 있고, 전달한 배열의 요소를 함수 안에서 변경할 수 있습니다. 이번에는 1차원 배열과 2차원 dojang.io
[C++] virtual 가상 함수는 기본 클래스(상속되지 않은 클래스) 내에서 선언되어 파생 클래스에 의해 재정의되는 맴버 함수입니다. 포인터(Pointer) 또는 기본 클래스에 대한 참조(Reference)를 사용하여 파생 클래스의 객체를 참조하면 해당 객체에 대해 가상 함수를 호출하고 파생 클래스의 함수를 실행할 수 있습니다. 이는 주로 실행시간(Runtime)에 함수의 다형성(Polymorphism)을 구현하는데 사용됩니다. 가상 함수는 기본 클래스내에 virtual 키워드로 함수를 선언합니다. parent 클래스를 가리키는 포인터 p를 선언하고, child 클래스의 객체 c를 선언했습니다. 이 포인터 p는 c객체를 가리킵니다. 몸체는 parent 클래스지만 실제 객체는 child 클래스입니다. 이 포인터 p를 이용하여 ..
[C++] auto C++ 11에서 타입 추론 (Type inference in C++ 11) C++ 11에서 auto 키워드는 유용하다. 5.0이 부동 소수점 숫자 리터럴이라는 것을 이미 알고 있다면, 왜 d의 타입(=자료형)을 double이라고 명시적으로 선언해야 할까? 변수를 초기화할 때 사용하는 값을 기준으로 적절한 타입을 추론하도록 하면 편하지 않을까? auto 키워드는 선언된 변수의 초기화 식을 사용하여 해당 형식을 추론하도록 컴파일러에 지시한다. 즉, auto 키워드를 사용하면 초깃값의 형식에 맟춰 선언하는 인스턴스(변수)의 형식이 '자동'으로 결정된다. 이것을 타입 추론(type inference)이라고 한다. 주의: 이 기능은 생성 시 변수를 초기화할 때만 작동한다. 초기화 값을 사용하지 않고 생성된 변수는..
[C++] 스마트 포인터, unique_ptr C++ 프로그램에서 new 키워드를 사용하여 동적으로 할당받은 메모리는, 반드시 delete 키워드를 사용하여 해제해야 합니다. C++에서는 메모리 누수(memory leak)로부터 프로그램의 안전성을 보장하기 위해 스마트 포인터를 제공하고 있습니다. 스마트 포인터(smart pointer)란 포인터처럼 동작하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해 줍니다. 스마트 포인터의 동작 보통 new 키워드를 사용해 기본 포인터(raw pointer)가 실제 메모리를 가리키도록 초기화한 후에, 기본 포인터를 스마트 포인터에 대입하여 사용합니다. 이렇게 정의된 스마트 포인터의 수명이 다하면, 소멸자는 delete 키워드를 사용하여 할당된 메모리를 자동으로 해제합니다. 따라서 new 키워드가 반환..
[C++] 깊은 복사 , 얕은 복사 얕은 복사 코드에서 name은 주소값을 참조하기때문에 복사를 하였더라도 같은 주소를 참조하게된다. 그렇기 때문에 name을 바꿨을때 A,B객체의 name값이 둘다 바뀌게된다. 또한 소멸자가 호출될 때 name은 같은 메모리를 참조하기때문에 한번 delete된 메모리를다시 delete하기때문에 오류가 발생한다. 깊은 복사 이번에는 복사 생성자에서 새로운 메모리를 할당하기때문에 원본과 복사본의 참조 공간이 다르며 소멸자도 오류가 발생하지않는다. C++ 얕은 복사와 깊은복사 Intro lesslate.github.io [ C++ ] 깊은 복사( deep copy )와 얕은 복사 ( shallow copy ) 얕은 복사( shallow copy )는 디폴트 복사 생성자에 의한 멤버 대 멤버의 복사 방식을 말한다..
[C++] Rvalue 참조 선언자: && m.blog.naver.com/PostView.nhn?blogId=0511cjh&logNo=221590246985&proxyReferer=https:%2F%2Fwww.google.com%2F
[C++] 참조형 변수 : & References vs pointers 참조형과 포인터는 흥미로운 관계에 있다. 참조형은 접근할 때 암시적으로 역참조되는 포인터와 같은 역할을 한다. (참조형은 내부적으로 포인터를 사용하여 컴파일러서 구현된다.) A brief review of l-values and r-values '01.02 - 변수, 초기화 및 할당' 포스트에서 l-value와 r-value를 공부한 적이 있다. 요약하면, l-value는 메모리 주소를 가진 객체이고 r-value는 메모리 주소가 없고, 표현식 범위에만 있는 임시 값이다. 참조형 변수 (Reference variable) 지금까지 두 가지 변수 타입을 공부했다. 일반 변수(normal variable): 직접 값을 보유. 포인터(pointer): 다른 값의 주소(..
[C++] 멤버 이니셜라이저 위에서 쓰인 멤버 이니셜라이저에 대해 간단히 알아보도록 합시다. 이 멤버 이니셜라이저는, 방금처럼 부모 클래스의 멤버 변수를 초기화 하기 위해서 생성자 함수를 호출한다던가, 클래스 내의 변수를 초기화한다던가, const 변수를 초기화 할때도 사용됩니다. 멤버 이니셜라이저는 생성자의 몸체 부분보다 먼저 실행된다는 특징을 가지고 있습니다. 간단히 멤버 이니셜라이저에 대한 예제를 살펴보도록 합시다. 코드를 살펴보시면, 5~15행에 memInit란 클래스가 정의되어 있고, 그 안에는 num1, num2라는 private 멤버와 생성자, num1과 num2를 출력하는 ShowInfo 함수가 존재합니다. 10행을 잘 보시면, 콜론(:) 연산자 뒤에 "num1(_num1), num2(_num2)"와 같이 쓰였는데, ..
[C++] char to int 문제를 풀다가 문자를 정수로 바꾸는 걸 까먹고 안해서 계속 에러가 나는 걸 꽤나 헤맸다. 뒤늦게 숫자가 아스키 코드라는 것을 깨닫고 C++에서 char 데이터형을 int로 변환하는 법을 검색해 보았다. 스택 오버플로우에 쉬운 방법이 있어 기록해 놓는다. '1'의 문자를 int 1로 수정하고 싶다면 아래와 같이 작성할 수 있다. 아스키 코드의 순서가 '0' 부터 '9'씩 차례대로 1씩 늘어나므로 위와 같이 작성하면 해당 수의 값을 구할 수 있다. '1'의 문자의 아스키 코드 값을 보고 싶다면 (int)를 붙여 형 변환을 해준다. [C++] char형 데이터 int형으로 변환하기 문제를 풀다가 문자를 정수로 바꾸는 걸 까먹고 안해서 계속 에러가 나는 걸 꽤나 헤맸다. 뒤늦게 숫자가 아스키 코드라는 것을 깨닫..
[C++] vector 탐색 [C++ STL] '탐색 알고리즘(search algorithm)' C++ STL에서 제공하는 컨테이너에는 기본적인 기능을 담은 멤버 함수가 있습니다. 그리고 그것과는 별개로, STL에선 알고리즘(algorithm)을 제공합니다. STL algorithm은 algorithm 헤더 파일을 통해 사용할 pangtrue.tistory.com C++ Vector 값 탐색 find - 존재 유무 확인 1. find, find_if vector에서 특정 데이터가 존재하는지 확인하고 싶다. 그렇다면 algorithm 라이브러리의 find를 사용할 수 있다. find는 반복자를 인자로 갖으면서 배열, vector, deque 처럼 일련의 데이터.. notepad96.tistory.com
[C++] 문자열 입력 한 줄을 입력받아 저장할 수 있는 getline 함수를 사용 cin 에 포함되어 있다. 표준 입력 버퍼에서 개행 문자를 제외한 값을 가져온다. 공백이나 개행 입력 시 공백 이전까지의 값만 결과로 받아들인다. 개행 문자를 입력 버퍼에 남겨둔다. 이때 hello 같은 문자열이라면 문제 없이 입력을 받지만 Hello World!와 같이 띄어쓰기가 포함된 문장이라면 Hello 까지 밖에 입력이 되지 않을 것이다. cin의 >> 연산자에서는 공백문자에서 입력을 끊기 때문인데, 이러한 문제를 해결하기 위해서 getline()이라는 함수를 사용한다. getline() getline()함수는 두 가지가 존재하는데 각가 다른 라이브러리에 존재한다. istream 라이브러리에 속한 cin.getline()함수와 strin..
[C++] 배열 초기화 c에서는 그렇게 귀찮은 배열초기화가 c++에는 내장함수가 존재한다!! C++ 배열 초기화 방법 다음과 같은 배열을 초기화 시키고 싶을때 int arr[100]; 이 있을때 이 배열을 전부 0으로 초기화 하고 싶을때 쓰는 방식은 int arr[100] = {0,}; * 만약 0이 아닌 다른값으로 초기화 하고 싶다면, for(int i=0 www.uwangg.com
[C++] 문법 카테고리
[C++] vector 정렬 정렬을 하려면 라이브러리의 sort() 함수를 쓰면 된다. 따라서 헤더파일을 포함해줘야 한다. sort() 함수의 첫번째 두번째 매개변수는 iterator, 즉 포인터이다. [C++] vector (벡터) 정렬, 배열 정렬하기 정렬을 하려면 라이브러리의 sort() 함수를 쓰면 된다. 따라서 헤더파일을 포함해줘야 한다. sort() 함수의 첫번째 두번째 매개변수는 iterator, 즉 포인터이다. sort - C++ Reference custom (2)template void s.. breakcoding.tistory.com
[C++] 다른 파일명의 클래스 파일 헤더파일에서 클래스를 정의했다면 cpp파일에서는 클래스를 따로 선언할 필요 없이 그냥 함수만 작성해주면 된다. [완료]c++ 여러개의 파일을 컴파일 어떻게 하나요? | KLDP 이거 쉬운거라서 검색하면 금방 나올거라고 생각했지만..이외로 안나오네요..-_-; 리눅스에서 C++ 파일을 여러개로 나눈 다음에 그 파일을 컴파일할라고 합니다. 어떻게 해야하나요? #include class kldp.org C, C++] 헤더파일과, CPP파일로 소스 코드 분리 대학교 학부과정에서 C, C++을 배우는 상황에서는 소스코드를 헤더파일과 CPP(혹은 C, 여기서는 CPP파일로 통칭하겠다.)파일로 분할해서 활용하는 일이 거의 없다. 컴퓨터 사고를 키우는 것과 프로 twinparadox.tistory.com main.cp..
[C++] string 관련 함수 ▶ C언어, C++ 문자열 관련 함수들 포스팅 C언어 문자열 탐색 함수 strstr [바로가기] C언어 문자 입출력 함수 getchar, putchar [바로가기] C언어 문자열 입출력 함수 puts, gets [바로가기] C언어 문자열 복사 strcpy, strncpy [바로가기] C언어 문자열 이어붙이기 strcat [바로가기] C언어 문자열 길이 구하기 strlen [바로가기] 1. C++ string 클래스 헤더파일과 설명 그리고 생성하는 방법. 2. C++ string 클래스 멤버함수 거~의 대부분 정리 (꼼꼼하게 작성했습니다.) -> at(), operator[], front(), back() -> size(), length(), capacity(), resize(), shrink_to_fit..
[C] strnset 부분 문자열을 특정 문자로 채우기 mintpark.tistory.com/99
[C++] 복사 생성자와 delete 키워드 복사 생성자 문제점 실행 시 얕은 복사(shallow copy)에 의한 메모리 참조 에러 발생 객체 p1 선언 시 생성자에서 name, phone 메모리 할당 객체 p2 선언 시 디폴트 복사 생성자에서 메모리 할당 없이 객체 p1의 name, phone의 포인터만 복사(얕은 복사) p2 소멸자 호출하여 name, phone 포인터가 가리키는 메모리 해제 소멸자 호출 순서는 생성자와 반대 순서 p1 소멸자 호출하여 name, phone 포인터가 가리키는 메모리 해제 시 실행 에러 이미 p2 소멸자에 의해 해제 !!! ™ 메모리를 할당하는 깊은 복사를 하는 생성자를 작성하여 해결 C++11 이전엔 private 안에 복사 생성자와 대입 연산자를 정의하여 외부에서 접근하지 못하게 하는 방법 이였다면, 이젠 d..