容器
- vector
内存空间: 顺序,连续,有预留
迭代器有效性: size区域即迭代器有效,如果内存发生转移了,新size区域有效,原先的都会失效
常用方法
vector.erase(iterator): 返回下一个迭代器
vector.erase(iterator1, iterator2): 返回iterator2指向的迭代器,删除范围[iterator1, iterator2)
vector.insert(iterator, value):返回插入位置的迭代器
vector.resize(size): 改变size范围大小,分三种情况
new size < old size: 只是start和finish变了
old size < new size <= capacity: 会创建新的对象,并设置默认值
new size > capacity: 开辟新的连续内存,拷贝原数据到新内存上,start、finish、end_of_storage都发 生变化
vector.resize(size, defaultValue): 和上面类似,但是默认值为defaultValue
vector.reverse(cpSize): 改变capacity范围大小,分两种情况(cpSize: capacity的大小, size:图片中的size)
cpSize <= size: size和capacity都不变,即使原来capacity有剩余的,也不会为此减少
cpSize > size: capacity大小改变,size不变
-
list
list.erase(iterator):返回下一个迭代器
list.erase(iterator1,iterator2):返回iterator2指向的迭代器,删除范围[iterator1, iterator2) -
map
map.erase(iterator):返回下一个迭代器 -
set
set.erase(iterator):返回下一个迭代器
线程thread
多线程通信有socket,共享内存,管道(底层实现网络), 消息循环
qt可以用信号槽
个人总结:
- 构造时执行线程任务,不用等到join或者detach