c++里的vector,这东西在标准模板库(stl)里头可是个宝贝,因为它能根据需求随时变大

咱们来聊聊C++里的vector,这东西在标准模板库(STL)里头可是个宝贝,因为它能根据需求随时变大变小,这可比固定长度的数组灵活多了。 你刚学的话,创建vector可以选三种办法。第一种直接写个std::vector,这时候里面啥也没有,容量也是零。第二种是指定个大小,比如弄个std::vector vec(10),这样里面就有10个元素了,值都是默认的零。第三种最方便,直接用列表初始化,比如把{1,2,3,4,5}一股脑丢进去,大小和值就都定下了。 访问元素的时候,有两种写法。一种是直接用下标vec[i],要是i越界了,它会扔个std::out_of_range异常出来;另一种是用成员函数vec.at(i),这招更安全点,编译的时候就能检查到问题。一般在写循环或者传参数时用下标就行,要是想写得更清楚点就用at()。 往里加东西用push_back就行,在最后面加个10,容量也会自动变大;要想删掉最后一个元素就用pop_back。要是想在中间插个数,可以先找个迭代器指着第3个位置,然后用insert把5塞进去;要是想把这个数删掉就用erase。注意这里有个坑:erase返回的是下一个元素的迭代器,直接写++iter会越界的,正确做法是重新定位iter。 另外有一种删除方法是先用remove把3挪到后面去,这时候内存还没释放呢;得紧接着再调用erase才能把3彻底删掉,不然内存就泄露了。记得啊,remove只是把后面的元素往前挪了挪,容量并不会变。 最后说说怎么清空和释放内存。直接调用clear()只能把size清零,capacity还是原样,内存没回收;要是想用个干净的办法,可以弄个空vector出来和原来的交换一下,这样系统就会自动把旧内存给收走了。 总之啊,当你彻底不用这个vector了,想马上回收内存的话,先clear()一下再做一次swap是最保险的做法。