C++实践笔记
阅读量: 101
阅读人次: 102
记了很多次笔记,简单的不会去看,复杂的记了又看不上。这次就以面试为目的,记录那些自己遇到的不会的知识点。
我在创建一个 C++ 类 Test,在其构造函数执行资源分配。如果分配失败,我该如何通知构造函数外部?
-
如何定义一个数组指针?
int arr[5] = {1, 2, 3, 4, 5};
int (*p)[5] = &arr; // p是指向包含5个int元素的数组的指针 -
如何按位定义结构体?
struct 结构体名 {
数据类型 成员名 : 位数;
// 例如:unsigned int flag1 : 1;
}; -
编写一个判断大小端存储方式的函数。
#include <stdio.h>
int is_little_endian() {
union {
int num;
char byte;
} test = {.num = 1}; // 初始化联合体成员
return test.byte == 1; // 共享内存首字节[1,8](@ref)
}
int main() {
printf("%s\n", is_little_endian() ? "小端模式" : "大端模式");
return 0;
} -
std::vector
中resize()
和reserve()
的区别。reserve()
改变的是vector
的capacity
,也就是容量,且只在扩大时,也就是reserve()
的参数大于当前容易的capacity
时才生效,小于时不作用。如果要减小vector
的capacity
应该使用shrink_to_fit()
让capacity
等于vector
的size
。size()
函数用于改变vector
的size。当size大于当前capacity
时,vector
会进行扩容,然后再将现有元素复制到新的内存空间上去。小于capacity
时,也只改变size
大小,不改变capacity
大小。