myTinySTL实现(一)

①‘\’换继符号,告诉编译器这行代码还没结束,将下一行代码和本行代码连接起来,可用于宏定义中
②‘#’右值中出现时,作用是把传入的参数转换为字符串字面量
如下:编译器会将fun转换为符串字面量
#define FUN_AFTER(con, fun) do { \
std::string fun_name = #fun; \
std::cout << " After " << fun_name << " :\n"; \
fun; \
COUT(con); \
} while(0)


③setw(),用于设置接下来要输出的字段的宽度
④vector插入慢,查找快
  ①插入慢是因为每次插入都需要移动一个或多个元素,尾插除外
  ②查找快是因为,vector在内存中连续存储的,只需要知道首元素地址和元素大小,即可通过指针算术直接定位到任意位置,比如首元素地址为0020,元素大小为2,在元素访问不越界的情况下,第三个元素地址为0024


⑤vector<int> v2[5]; 和 vector<int> v3(5);这两种容器初始化格式的不同之处
  ①前者(vector<int> v2[5]; )是创建了五个独立的vector<int>对象,这些对象一起组成数组
  ②后者(vector<int> v3(5);)是创建了一个vector对象,容量为5;

⑥为什么用siez_t ,而不是int。
  ①size_t 是表示容器大小、数组索引、内存大小的标准类型
  ②容器大小不能是负数,而int类型可以存储负数
  ③size_t 会根据系统(32位或64位)自动调整大小
⑦流对象不可拷贝,所以重载流对象需要引用
⑧为什么释放内存时,需要先销毁元素,而不是直接释放,

  因为会造成内存泄露,例如vector<string>v1中存有字符串“hello”,如果直接释放内存,那么"hello"所占据的内存谁都没办法访问,相当于永远丢失

日期:2026年3月9日

软件:vscode

posted @ 2026-03-09 14:58  freeyang8  阅读(4)  评论(0)    收藏  举报