容器的相关操作

本文详细介绍了C++标准库中的容器操作,包括元素的添加、访问、删除等基本操作,以及容器间的比较方法和大小调整等内容。特别关注了迭代器的使用及可能引起的失效问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



本文转自:http://blog.youkuaiyun.com/sinat_24229853/article/details/43836037

http://blog.youkuaiyun.com/sinat_24229853/article/details/43836261

http://blog.youkuaiyun.com/sinat_24229853/article/details/43836351

http://blog.youkuaiyun.com/sinat_24229853/article/details/43836409

http://blog.youkuaiyun.com/sinat_24229853/article/details/43836453

http://blog.youkuaiyun.com/sinat_24229853/article/details/43836507

http://blog.youkuaiyun.com/sinat_24229853/article/details/43836537

1、size_type其大小足以保证存储内存中对象的大小。

2、iterator:迭代器

3、const_iterator:常迭代器。常对象调用begin或end返回的是常迭代器。

4、 difference_type:同一容器对象中不同元素之间的距离


1、在顺序容器中添加元素

c.push_back(t)

c.push_front(t)

c.insert(p,t)//在p迭代器位置插入t

c.insert(p,n,t)//在p迭代器位置插入n个t

c.insert(p,b,e)//在p迭代器位置插入b迭代器和e迭代器之间的元素

vector只能往后插,list和deque可以往前插

2、容器元素都是副本,不会修改传进去的变量的值

3、添加元素可能会使迭代器失效,因此要避免存储end操作返回的迭代器


1、关系运算符>、<、==、!=

2、所有的容器类型都可以使用

3、比较的容器必须必须具有相同的容器类型

4、容器的比较是基于容器内元素的比较(而不是容器的长度)

5、容器内元素必须有相应的关系运算符


1、容器大小的操作

c.size();

c.max_size();//最大能装多少个对象

c.empty();

c.resize(n);

c.resize(n,t);//容器调整到大小为n,新增的数据用t来填上

注意:resize操作可能会使迭代器失效


访问元素

1、c.back();

2、c.front();

3、c[n];

4、c.at(n);//这种更好,可以异常 处理catch(out_of_range)

注意:c[n]和c.at[n]只适合vector和deque容器,因为list不能随机访问


删除元素

1、c.erase(p);

2、c.erase(b,e);//删除从b到e的所有元素,包括b但不包括e

3、c.clear();//删除所有元素

4、c.pop_back()

5、c.pop_front()

注意:c.pop_front只适用于list和deque,因为vector不能从前面取出


一、赋值与交换

1、c1 = c2;

2、c1.swap(c2);

3、c1.assign(b,e);//b和e是两个迭代器

4、c1.assign(n,t);//n个t

二、使用swap:类型必须相同

三、使用assign:类型兼容即可

<think>好的,用户想了解Docker容器的常规操作方法,特别是常用命令和使用指南。我需要根据提供的引用内容来整理这些信息。首先,我应该分几个主要部分来组织回答,比如容器生命周期管理、网络配置、数据管理、日志和监控,以及GPU容器操作等。引用1、2、3、4都提到了不同的命令,需要整合这些内容,确保覆盖全面。 首先,容器生命周期管理包括运行、启动、停止、删除等。根据引用4,运行容器可以使用docker run,并提到端口映射和后台运行的参数。引用2里也有运行容器和重启的命令,比如docker restart。停止容器用docker stop,删除用docker rm,这些在引用2和3都有提到。 然后是镜像管理,引用2提到查看镜像、下载镜像、搜索镜像,对应的命令是docker images、docker pull、docker search。删除镜像用docker rmi,引用3也有涉及。 网络配置方面,引用2提到了查看网络、创建网络、删除网络,使用docker network相关的命令。数据管理部分,引用1和2都提到了数据卷,比如docker volume create和挂载数据卷到容器,这需要详细说明。 日志管理在引用1中提到docker logs,监控资源使用可以用docker stats和docker top,这些在引用2和3里都有。另外,进入容器执行命令用docker exec,这也是常用的。 GPU容器操作是引用2的重点,需要单独列出来,比如使用--gpus参数运行容器,并给出示例命令。另外,运行Jupyter服务的例子也可以提一下,帮助用户理解应用场景。 还要注意命令的语法正确性,比如端口映射是-p参数,数据卷挂载是-v,环境变量是-e。引用4中的nginx示例可以作为一个实战案例,说明如何运行一个web服务器。 需要确保回答结构清晰,每个部分用小标题,命令用代码块,并且按照用户的要求,行内数学表达式用$...$,但这里可能用不上。最后生成相关问题,可能涉及性能优化、常见错误解决、数据持久化方法、容器网络配置等。 检查是否有遗漏的重要命令,比如查看容器进程的docker ps,查看容器详细信息的docker inspect,这些在引用2和3里都有提到。另外,数据卷的备份和恢复虽然用户没直接问,但属于常规操作,可以简要提及。 最后,确保所有引用来源正确标注,比如引用1是关于日常维护命令,引用2包含GPU容器操作,引用4提供了运行容器的具体案例。需要将这些信息整合成一个连贯的指南,帮助用户快速掌握Docker容器的常用操作。</think>### Docker容器常规操作指南 #### 一、容器生命周期管理 1. **运行容器** ```bash # 基础运行(带交互终端) docker run -it --name my_container ubuntu:20.04 /bin/bash # 后台运行并映射端口(Web服务示例) docker run -d -p 8080:80 --name nginx_web nginx [^4] # 带环境变量和自动删除 docker run -e MYSQL_ROOT_PASSWORD=123456 --rm mysql:8.0 ``` 2. **启停与删除** ```bash docker start/stop/restart my_container # 启停与重启 [^2] docker rm my_container # 删除已停止的容器 docker rm -f running_container # 强制删除运行中的容器 [^3] ``` #### 二、镜像管理 ```bash docker images # 查看本地镜像 [^2] docker pull ubuntu:22.04 # 下载镜像 docker search nginx # 搜索镜像仓库 docker rmi ubuntu:20.04 # 删除镜像(需无容器依赖)[^3] ``` #### 三、网络配置 ```bash docker network ls # 查看网络列表 docker network create my_net # 创建自定义网络 [^2] docker run --network=my_net ... # 指定容器网络 ``` #### 四、数据管理 ```bash # 数据卷操作 docker volume create db_vol # 创建数据卷 docker run -v db_vol:/var/lib/mysql ... # 挂载数据卷 [^1] # 目录直接挂载 docker run -v /host/path:/container/path ... ``` #### 五、监控与调试 ```bash docker ps -a # 查看所有容器状态 [^3] docker logs my_container # 查看容器日志(-f实跟踪)[^1] docker stats # 实监控资源使用 docker top my_container # 查看容器进程树 ``` #### 六、高级操作 1. **进入容器执行命令** ```bash docker exec -it my_container /bin/bash # 进入bash终端 docker exec my_container ls /app # 执行单次命令 ``` 2. **GPU容器操作(需NVIDIA环境)** ```bash docker run --gpus all nvidia/cuda:11.0-base # 使用全部GPU docker run --gpus '"device=0,1"' ... # 指定GPU设备 ``` #### 七、实战案例 **运行Jupyter服务** ```bash docker run -d -p 8888:8888 -v ~/notebooks:/home/jovyan/work jupyter/tensorflow-notebook --NotebookApp.token='' [^2] ``` #### 八、系统维护 ```bash docker system df # 查看存储占用 docker prune # 清理无用对象(镜像/容器/网络) docker update --restart=always my_container # 设置自动重启 [^1] ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值