Bootstrap

UE学习日志#17 C++笔记#3 基础复习3

19.2 [[maybe_unused]]

禁止编译器在未使用某些内容时发出警告

19.3 [[noreturn]]

永远不会把控制权返回给调用点

19.4 [[deprecated]]

        标记为已弃用,仍然可以使用但是不鼓励使用

        可以加参数表示弃用的原因[[deprecated("")]]

19.5 [[likely]]和[[unlikely]]

        这些表示可能性的属性可用来帮助编译器优化代码

20 C风格的数组和std::array

C风格数组的几种初始化

int myArray[3] = {0};//全0
int myArray[3]={};//全0
int myArray[3]{};//全0

int myArray[]{1,2,3};//大小为3,内容1、2、3
int myArray[3]={2};//第一个为2,其他都为0

std::array

array<int,3> arr{1,2,3};
array arr {1,2,3};

这两种都是大小固定的

21 std::vector 

大小不固定

简单用法:

vector<int> myVector {1,2};
myVector.push_back{3};

22 std::pair

pair <double,int> myPair {1.23,4};
//first second访问

这篇还没完,明天会继续补一点

(补)

23 std::optional

C++三剑客之std::optional(一) : 使用详解_c++ optional-CSDN博客

24 结构化绑定

//example1
array values {11,22,33};

auto [x,y,z] {values};

//example2

struct Point {double x,y,z};
Point point;
point.x=1;point.y=2;point.z=3;
auto [x,y,z]{point};

//example3

pair myPair{"hello",5};
auto [theString,theInt]{myPair};

25 基于范围的for循环的初始化器

for(<initializer>;<for-range-declaration>:<for-range-initializer>){<body>}

示例: 

for(array arr {1,2,3,4};int i : arr){cout<<i<<endl;}

26 初始化列表

<initializer_list>中定义

示例:

int makeSum(initializer_list<int> values){

    int total {0};
    for(int value:values){
        total+=value;
    }
    return total; 
}

int a{makeSum({1,2,3})};

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;