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})};