vector容器代码注释

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 1.赋值操作2容量和大小3插入和删除操作4数据存取5互换容器6.vector预留空间vector预留空间

include

include //vector容器要包含它的头文件·

using namespace std;
void print(vector& v)
{

for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
    cout << *it << " ";
 }
cout << endl;

}

//它是动态扩展,找一块新的更大的空间,把原来的数据拷贝到这,释放原来的空间

//1.赋值操作
/*

  • 函数模型:、
  • vector& operator=(const vector& dep) 重载=运算符
  • assign(beg,end); 将beg,end之间的数据拷贝给自身
  • assign(n,elem); 将n个elem拷贝赋值给本身

*/
/*
void test01()
{

vector<int>v;
vector<int>v1;
vector<int>v2;
for (int i = 0; i < 10; i++)
{
    v.push_back(i);
}
print(v);
v1 = v;
//直接赋值法
print(v1);

v2.assign(v.begin(), v.end());
//assign 赋值
print(v2);

//n个元素方式赋值
vector<int>v3;
v3.assign(10, 100);//打印10个100
    print(v3);

}

//2.容量和大小

/*

  • 函数原型:

empty() 判断容器是否为空
capacity() 容器的容量
size() 返回容器中元素的个数
resize(int num) 重新指定容器的长度为num,
如果容器变长则以默认值填充新位置
如果容器变短,则末尾超过容器长度的元素删除
resize(int num,elem) 重新指定容器的长度为num,
如果容器变长则以elem值填充新位置
如果容器变短,则末尾超过容器长度的元素删除
*/

void test02()
{

vector<int>v1;
for (int i = 0; i < 10; i++)
{
    v1.push_back(i);
}
print(v1);
if (!v1.empty() )
    cout << "buweikong" << endl;
cout << "v1的容量大小:" << v1.capacity() << endl;
cout << "v1的大小:" << v1.size() << endl;

v1.resize(12,20);
print(v1);

}

//3.插入和删除操作
函数原型
push_back(elem); 尾部插入元素elem
pop_back();删除最后一个元素
insert(const_iterator pos,elem);迭代器指向位置pos插入元素elem
insert(const_iterator pos,int cout,elem);迭代器指向位置pos插入cout个元素elem
erase(const_iterator pos);删除迭代器指向的元素
erase(const_iterator start,const_iterator end);删除迭代器从start到end之间的元素
clear(); 删除容器中所有元素

//4.数据存取
函数原型:
at(int idx);返回索引idx所指的数据
operator[]返回索引idx所指的数据
front(); 返回容器中第一个数据元素
back(); 返回容器中最后一个数据元素

void test04()
{

vector<int>v4;
for (int i = 0; i < 1000; i++)
{
    v4.push_back(i);
    //利用at访问元素    
    //cout << v4.at(i) << endl;
    //cout << v4[i] << endl;
}
int n=v4.back();
//print(v4);
cout <<"最后一个元素:" << n << endl;
n = v4.front();
cout <<"第一个元素:" << n << endl;

//5.互换容器

//函数模型:swap(vex)
vector<int>v5;
v5.swap(v4);

//print(v5);
//print(v4);//因为v5是空,所以交换之后不进入for循环,打印一个换行
//巧用swap()可以收缩内存空间
cout << "v4的容量是:" << v4.capacity() << endl;
cout << "v5的容量是:" << v5.capacity() << endl;
cout << "v5的大小是:" << v5.size() << endl;
v5.resize(3);//改变了大小,但是容量没有改变,所以浪费了
cout << "v5的容量是:" << v5.capacity() << endl;
cout << "v5的大小是:" << v5.size() << endl;

//巧用swap收缩
vector<int>(v5).swap(v5);
cout << "v5的容量是:" << v5.capacity() << endl;
cout << "v5的大小是:" << v5.size() << endl;
//vector<int>(v5)匿名对象 利用拷贝函数构造新的对象
//swap(v5);      容器的交换,相当于指针进行交换,交换完之后,匿名对象会自动销毁(销毁原来的1000)

}

//6.vector预留空间
void test06()
{

vector<int>v;
//预留空间
v.reserve(100000);
int num = 0;
int* p = NULL;
for (int i = 0; i < 100000; i++)
{
    v.push_back(i); 
    if (p != &v[0])
    {
        p = &v[0];
        num++;
    }

}

cout << "重新开辟次数:" << num << endl;

}

int main()
{

//test01();
//test02();
//test04();
test06();
system("pause");
return 0;

}

目录
相关文章
|
4月前
|
存储 C++ 容器
如何将没有复制或移动构造函数的对象放入vector容器
如何将没有复制或移动构造函数的对象放入vector容器
42 0
|
4月前
|
Shell 云计算 Docker
零基础到容器技术大神,一键解锁Docker实战秘籍!从零搭建,见证你的技术飞跃,让代码在云端翩翩起舞!
【8月更文挑战第5天】在云计算与微服务当道的今天,容器技术如汹涌浪潮般席卷IT领域。对新手而言,它或许充满神秘,但无须担忧,让我们一同揭开它的面纱。容器是一种轻量级软件打包技术,允许应用及其依赖被打包,在独立的虚拟环境中运行。Docker作为容器界的明星,简化了容器的创建与管理。从安装Docker开始,运行首个容器,深入容器内部执行命令,直至构建自定义镜像,我们将逐步掌握这项关键技术。这不仅是一场技术之旅,更是思维方式的革新,让我们携手探索未来。
76 6
|
4月前
|
缓存 资源调度 Kubernetes
阿里云云效产品使用合集之如何将两个独立的代码仓库构建并部署到同一个容器内
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
API Docker 容器
容器镜像解析问题之使用go-containerregistry在代码中解析容器镜像如何解决
容器镜像解析问题之使用go-containerregistry在代码中解析容器镜像如何解决
42 0
|
6月前
|
C++ 容器
C++之评委打分案例(vector与deque容器练习)
C++之评委打分案例(vector与deque容器练习)
|
6月前
|
存储 算法 C++
C++一分钟之-容器概览:vector, list, deque
【6月更文挑战第21天】STL中的`vector`是动态数组,适合随机访问,但插入删除非末尾元素较慢;`list`是双向链表,插入删除快但随机访问效率低;`deque`结合两者优点,支持快速双端操作。选择容器要考虑操作频率、内存占用和性能需求。注意预分配容量以减少`vector`的内存重分配,使用迭代器而非索引操作`list`,并利用`deque`的两端优势。理解容器内部机制和应用场景是优化C++程序的关键。
72 5
|
6月前
|
存储 算法 C++
【C++/STL】:vector容器的基本使用
【C++/STL】:vector容器的基本使用
44 1
|
5月前
|
存储 安全 C++
|
5月前
|
存储 算法 C++
【C++】详解STL容器之一的 vector
【C++】详解STL容器之一的 vector
|
6月前
|
运维 Serverless 文件存储
函数计算产品使用问题之如何将本地代码与容器镜像一起打包部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。