분류 전체보기
-
C++ Primer CH9. Sequential Containersc++ 2024. 1. 21. 16:24
vector같은 컨테이너들은 내부에 자신의 크기 변수를 가지고 있어서 size()함수는 O(1)이다. 어떤 컨테이너 쓸 지 결정하는 법 일반적인 경우 vector 사용 작은 요소들이 많고 space overhead가 걱정되면 list나 forward_list 쓰지 말라(다음 노드 가리키는 포인터 필요해서) random access 필요하면 vector나 deque 쓰기 컨테이너 중간에 추가해야 할 일이 많으면 list나 forward_list → vector는 각 원소를 복사해야 하는 비용이 추가적으로 들음 맨앞, 맨끝에 추가하거나 제거할 일이 많으면 deque 중앙에도 추가하고 랜덤 엑세스도 해야하면, 일단 list로 입력받아서 컨테이너 중간에 집어넣고 deque에 list를 복사 정말 중앙에 넣어야 ..
-
C++ Primer CH8. The IO Libraryc++ 2024. 1. 21. 16:22
지금까지 우리는 유저 콘솔에 찍히고 입력받는 IO 클래스(cin, cout)만 사용했었다. 근데, 파일을 읽고 써야 할 때는 무엇을 사용하는가? 여러가지 IO 타입들 w 붙으면 wide string(wchar_t) 지원 Relations among the IO Types IO type들은 클래스로서 상속관계에 있기 때문에 모두 같은 연산자(>>, 나 모두 파일을 여는 작업인건 같다. -> fstrm open(s)는 이전에 생성한 fstream을 이용해 파일 open은 이후에 필요할 때 하는 것이고, -> 차이는 fstream fstrm(s)는 fstream을 생성함과 동시에 파일을 여는 것이고, -> 같은 fstream을 여러번 사용해서 open할 수 있다. IO 클래스들도 모두 상속관계에 있는 클래스들..
-
C++ Primer CH7. Classesc++ 2024. 1. 21. 16:16
Defining a Member Function outside the Class 클래스 내에 선언된 모양과 똑같이 정의내려야 한다. 일단 컴파일러가 함수 이름을 보면, 나머지 코드는 클래스 내부에 있는 것처럼 해석한다. 따라서 멤버변수 사용할 수 있다. double Sales_data::avg_price() const { if (units_sold) return revenue/units_sold; else return 0; } return *this; → 인스턴스 참조자가 리턴됨 7.14 Constructors default constructor Sales_data total; 이런식으로 선언만 해주는 것처럼 보이는데, default constructor가 호출된다. 인자 아무것도 안 넣는 경우의 con..
-
C++ Primer CH6. Functionsc++ 2024. 1. 21. 16:14
6.1 Function Basics 함수 밖에서 정의된 객체는 프로그램 실행이 끝날 때까지 존재한다. 함수 안에서 정의된 지역 객체는 어떻게 정의되었는지에 따라 생명주기가 다르다. Automatic Objects :함수가 실행되는 동안만 살아있는 객체들 인자(파라미터)도 여기에 포함됨. 함수 시작시 파라미터가 저장소에 할당됨 지역변수 Local static Objects : 함수 내에 정의된 객체인데 함수가 끝났는데도 살아있는 static 객체 프로그램이 끝나면 파괴됨 default 초기화 값은 0이나 “”같은 것들이다.(value initialization) 6.1.2 Function Declarations 함수 선언은 헤더파일에 한다. 이후, 함수 정의 파일에서 해당 헤더파일을 include한다. 6..
-
C++ Primer CH4. Expressionsc++ 2024. 1. 21. 16:11
Lvalues and Rvalues 모든 표현식은 rvalue거나 lvalue이다. lvalue: 주소를 나타내는 표현식. rvalue: 값을 나타내는 표현식. object를 lvalue로 쓰면 memory 위치를 사용하는 것과 같고, rvalue로 쓰면 값(내용물)을 사용하는 것과 같다. decltype과 lvalue, rvalue간의 관계 할당은 오른쪽 결합이다(right associative) int ival, jval; ival = jval = 0; //ok int *pval; ival = pval = 0; // error, pval이 포인터라서 ival에 할당 안됨. 전위 증가와 후위 증가 int i = 0, j = 0; j = ++i; // i를 증가시키고 그 자체 반환, 반환값lvalue j..
-
C++ Primer CH3. Strings, Vectors and Arraysc++ 2024. 1. 21. 16:10
3.1 Namespace using Declarations scope operator ex)std::cin → std 네임스페이스에서 cin 네임을 사용하고 싶다. using namespace std; cin >> val; // using 안쓸 경우, std::cin >> val; header파일 내에는 using 선언자(declaration) 사용하면 안됨 해당 header 파일을 사용하는 모든 파일 내에서 해당 네임스페이스가 사용되므로 예기치 못한 이름 충돌 발생 가능성 존재. 3.2 Library string Type string variable-length sequence of characters 초기화 방법들 string s1; // default initialization, empty stri..
-
C++ Primer CH2. Variables and Basic Typesc++ 2024. 1. 21. 16:00
c++는 정적 타입 언어이다. 정적 타입 언어란, 컴파일러가 컴파일할 때, 모든 식별자의 타입을 알아야 한다는 것이다. c++은 class에 들어갈 data와 class가 수행할 연산도 커스텀할 수 있다. Type(타입)은 데이터와 연산자의 의미를 결정한다. char = same size as machine basic character set = single Byte char 8 wchar_t 16 char16_t 16 char32_t 32 short: 16bits int: 16bits(2Bytes) long 32 long long 64 float32 double 64 long double 96 메모리는 워드 단위로 읽힌다. 워드 = 32bit(4B) or 64bit(8) int main() { char..
-
C++ Primer CH1. Getting Startedc++ 2024. 1. 21. 15:53
c++ 필독서라는 c++ primer를 읽고 노션에 정리한 글이다. ch1 - getting started OS는 main() 함수를 호출함으로써 프로그램 시작시킴. main() 인자에는 값을 넣을 수도 있음 main()은 int 반환함, int: built-in type(언어가 정의하는 타입) ; → statement가 끝났다는걸 표시하기 위함. main()이 0 리턴 → 정상 종료 main()이 다른 값x 리턴 → x에 해당하는 error 발생 stream이란? read되거나 written되는 sequence of char through io device 왜 stream이란 이름이 붙였나? → generated, consumed, sequentially over time 느낌을 주기 위해 iostre..