Skip to content

Basic

  • "a"->string, 'a'->char

Value Range

有符号整数类型

类型 最小值 最大值 备注
char -128 127 至少 8 位
short -32,768 32,767 至少 16 位
int -2,147,483,648 2,147,483,647 通常是 32 位
long -2,147,483,648 2,147,483,647 至少 32 位,但可能更长
long long -9,223,372,036,854,775,808 9,223,372,036,854,775,807 至少 64 位

无符号整数类型(非负数)

类型 最小值 最大值 备注
unsigned char 0 255 至少 8 位
unsigned short 0 65,535 至少 16 位
unsigned int 0 4,294,967,295 通常是 32 位
unsigned long 0 4,294,967,295 至少 32 位,但可能更长
unsigned long long 0 18,446,744,073,709,551,615 至少 64 位

Uniform Initialization

int a{5}; // 直接初始化
std::vector<int> v{1, 2, 3}; // 统一初始化

Auto Keyword for Type Inference

auto x = 42;  // int
auto y = 42.0;  // double

Range-based For Loops

for (const auto& elem : vec) {
    // Do something with elem
}

Lambda Expressions

auto add = [](int a, int b) -> int {
    return a + b;
};

Smart Pointers

std::unique_ptr<int> p1(new int(42));
std::shared_ptr<int> p2 = std::make_shared<int>(42);

Template Functions

template <typename T>
T getMax(T a, T b) {
    return (a > b) ? a : b;
}

Move Semantics

std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = std::move(vec1);  // Moves data from vec1 to vec2

Structured Binding (C++17)

std::pair<int, std::string> p = {1, "one"};
auto [num, word] = p;

Variadic Templates

template<typename... Args>
void printAll(Args... args) {
    // Do something
}

Pattern Match

Switch

int value = /* some value */;
switch (value) {
    case 1:
        // do something
        break;
    case 2:
        // do something else
        break;
    default:
        // default case
        break;
}

unordered_map

unordered_map<string, function<int(int, int)>> operations = {
            {"+", [](int a, int b) { return a + b; }},
            {"-", [](int a, int b) { return a - b; }},
            {"*", [](int a, int b) { return a * b; }},
            {"/", [](int a, int b) { return a / b; }}
        };