C++ STL标准库-Vector容器
vector切片构造
int func(int var)
{
printf("%d",var);
return 1;
}
int main()
{
int array[]= {1,2,3,4,5};
vector<int> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);
vector<int> b=vector<int>(a.begin(),a.begin()+2);
for_each(b.begin(),b.end(),func);
return1;
}
a.begin()+2指向第一个元素的下一个位置,即左闭右开,a.begin()+(n+1),n为目标索引。
vector重复元素批量构造:
vector<int> c(5,1);
for_each(c.begin(),c.end(),func);
vector<int> c=vector<int>(重复次数,元素值);
vector赋值
operation=、assign函数
assign可以截取区间给vector。c.assign(b.begin(),b.begin()+2);
也可用于赋值重复元素给vector
vector插入和删除
push_back 尾部插入
poo_back 尾部删除
insert 给定一个迭代器指针,插入这个迭代器指针位置上
erase 同理
clear 清空全部
emplace_back性能优势
emplace_back只调用构造函数,没有移动构造函数,也没有拷贝构造函数。单纯这么看的话,速度是比push_back高的。
swap交换容器
将传入的容器与本身容器互换。
收缩空间
vec.shrink_to_fit() 让容器的空间自动适应容器的大小。
预留空间
reserve(int len)
减少vector在动态扩展容量时的扩展操作的次数
遍历与排序
int func(int var)
{
printf("%d ",var);
return 1;
}
int compare(int var1,int var2)
{
return var1>var2;
}
int main()
{
int array[]= {1,2,3,4,5};
vector<int> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);
sort(a.begin(),a.end(),compare);
for_each(a.begin(),a.end(),func);
}
sort(a.begin(),a.end(),compare);为sort算法提供一个比较器,结果返回1表示符合排序规则,返回0表示需要调整位置。
vector扩容机制
c++vector与c# java 列表扩容有些许不同。
在C++ stl中vector默认的初始容量为0或当你指定为0时,它在之后的push不会进行预扩容。
只有当你在构造结构体时指定初始容量大于0时,每次push后容器如果填满则会进行2倍的扩容。
作者:Miracle
来源:麦瑞克博客
链接:https://www.playcreator.cn/archives/programming-life/cpp/3673/
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
来源:麦瑞克博客
链接:https://www.playcreator.cn/archives/programming-life/cpp/3673/
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
THE END
0
打赏
海报
C++ STL标准库-Vector容器
vector切片构造
int func(int var)
{
printf("%d",var);
return 1;
}
int main()
{
int array[]= {1,2,3,4,5};
vector<int> a;……
文章目录
关闭