하루의 쉼터

[UtilitiesLibrary] std::size_t - with unsigned int 본문

프로그래밍/C++

[UtilitiesLibrary] std::size_t - with unsigned int

Changun An 2023. 4. 27. 00:51
반응형
  • 모든 유형의 객체의 최대 크기를 저장 할 수 있는 타입.
  • sizeof의 반환 형태.
  • 크기를 표현 할 수 없는 것은 저장 할 수 없음.
  • 부호 없는 정수형

unsigned int와 공통점은 부호 없는 정수형이며 다른점은 아래와 같다.

std::size_t

  • 크기를 나타내는 타입(구현 형태에 따라 달라짐)
  • 메모리 범위의 크기를 바이트 단위로 표현할 수 있는 부호 없는 정수
  • 시스템에 최대 크기의 메모리 블록

unsigned int

  • 4바이트 크기(32 비트 아키텍처 기준)
  • 효율적 수행

 

헤더 파일
* std::size_t를 사용하기 위해서는 밑에 헤더 중 하나를 사용하면 됨.

#include<cstddef> 
#include<cstdio> 
#include<cstdlib> 
#include<cstinrg> 
#include<ctime> 
#include<cwchar> 
#include<cuchar> // C++17 support

Test Code

#include <cstring> 
#include <iostream> 
#include <array> 
class A {
private : 
    int num_;
    std::string name_;
    double val_;
};
template<class T>
class B {
private :
    T t1;
    T t2;
};

class D : public A, public B<int>{
private :
    A a;
    B b;
};
class C : public B<int> {
private : 
    B b;
};

int main(){
    std::array<std::size_t, 10 > a;
    for (auto i = 0; i != a.size(); ++i) {
        std::cout << (a[i] = i) << ' ';
    }
    std::cout << '\n';
    for (std::size_t i = a.size(); i--; ) {
        std::cout << a[i] << ' ';
    }
    std::cout << '\n';
    std::size_t b = sizeof(a);
    std::cout << "array : " << b << '\n';
    std::size_t str = sizeof(std::string);
    std::cout << "string : " << str << '\n';
    std::size_t c_a = sizeof(A);
    std::cout << "class_A : " << c_a << '\n';

    std::size_t c_b = sizeof(B<int>);
    std::cout << "class_B : " << c_b << '\n';
    std::size_t c_c = sizeof(C);
    std::cout << "class_C : " << c_c << '\n';

    std::size_t c_d= sizeof(D);
    std::cout << "class_D : " << c_d << '\n';
    return 0;
}

 

Reference Site : 

https://en.cppreference.com/w/

 

cppreference.com

Null-terminated strings:    byte  −   multibyte  −   wide

en.cppreference.com

 

반응형
Comments