C++学习笔记:Vector容器

vector
v:初始化一个0大小的向量
vector
v(10):初始化一个10个大小的向量
push_back:增加一个元素

pop:删除一个元素,不返回

front:返回第一个元素

back:返回最后一个元素

at:返回特定位置的元素

capacity:vector的容量,会自动扩大 

也可以直接通过v[x]操作元素


/*: Test.cpp */
#include <iostream>
#include <vector>
#include <string>
#include <sstream>

using namespace std;

struct Entry
{
string name;
string number;
};

string int2Str(int i)
{
stringstream ss;
string s;
ss<<i;
ss>>s;
return s;
}

int main()
{
vector<Entry> phone_book;

for (int i = 0; i < 100; ++i)
{
cout<<phone_book.size()<<"--"<<phone_book.capacity()<<endl;
if(i<50)
{
Entry person;
person.name="xxx";
person.number=int2Str(i);
phone_book.push_back(person);
}
else
{
phone_book.pop_back();
phone_book.shrink_to_fit();//C++ 11可用
}
}

return 0;
}

C++学习笔记:Vector容器,布布扣,bubuko.com

时间: 2024-10-05 09:20:03

C++学习笔记:Vector容器的相关文章

C++学习笔记5 容器

1.  使用assign assign 操作首先删除容器中所有的元素,然后将其参数所指定的新元素插入到该容器中.与复制容器元素的构造函数一样,如果两个容器类型相同,其元 素类型也相同,就可以使用赋值操作符(=)将一个容器赋值给另一个容器.如果在不同(或相同)类型的容器内,元素类型不相同但是相互兼容,则其赋值运 算必须使用assign 函数.例如,可通过assign 操作实现将vector 容器中一段char* 类型的元素赋给string 类型list 容器. 由于assign 操作首先删除容器中

Dokcer学习笔记之容器管理命令

以下是对运行容器的命令的简单笔记: docker run IMAGE [COMMAND] [ARG....] run 在新容器中执行命令 -i --interactive=true|fasle 默认是false 交互模式 -t --tty=true|false 默认是false    端口 eg:    docker run -i -t centos /bin/bash 容器查看:docker ps -a|-l -a 所有容器列表 -l 刚刚运行的一个容器 ps 不加参数只列出运行的 docke

C++ primer 学习笔记之容器insert

今天在做练习9.22时,始终出现segments fault.最后才发现原来是自己对“容器insert之后迭代器会失效”的理解不够透彻. 题目如下: 假定iv是一个int的vector,下面的程序存在什么错误?你将如何修改? 1 auto iter = iv.begin(); 2 auto mid = iv.begin() + iv.size() / 2; 3 while(iter != mid){ 4 if(*iter == some_val) 5 iv.insert(iter, 2 * so

GEEK学习笔记— —STL容器之选用

默认情况下,选用vector,内部数据结构最简单,允许随机存取. 如果经常要在序列头部和尾部插入和删除元素,应该使用deque.如果希望元素被删除时,容器能自动缩减内存,那么也要选deque.此外,由于vector通常采用一个内存块存放元素,而deque采用多个内存块,后者可包含更多元素. 如果需要经常在容器中段执行元素的插入.删除或移动,可考虑list.list提供特殊成员函数,可在常数时间将元素从A容器转移到B容器.但由于list不支持随机存取,如果只知道list的头部却要访问中段元素,性能

STL学习笔记— —特殊容器priority_queue

简介 在头文件<queue> 中定义 namespace std { template <typename T, typename Container = vector<T>, typename Compare = less<typename Container::value_type>> class priority_queue; } priority_queue与queue很类似,但是priority_queue内部根据某种规则进行了排序,所以既不是先进

Spring.Net学习笔记(一)-容器的使用

一.下载地址: http://www.springframework.net/download.html 二.相关程序集 Spring.Net容器定义在程序集Spring.Core.dll中,它依赖于Common.Logging.dll.该程序集位于 Spring.NET-1.3.1\Spring.NET\bin\net\4.0\release目录下 三.创建容器 1.编程方式的容器 使用Spring.Context.Support.StaticApplicationContxt直接创建容器 p

thinkinginjava学习笔记10_容器

Java中并没有像Perl.Python.Ruby那样对容器有直接的支持,但是可以依靠容器类来完成相同的工作: 泛型 使用一个ArrayList对象可以保存一系列的对象,如: ArrayList apples = new ArrayList(); 申明一个ArrayList对象apples,接下来可以往apples中添加对象:apples.add(object),也可以根据索引获取对象:apples.get(index),此时,放置的对象都是Object类型的,这是不安全的类型,因为不能保证所有

Docker学习笔记 — Docker容器

1. 基本概念 Docker利用容器运行应用,容器是从镜像创建的运行实例,每个容器都是相互隔离的. 镜像是只读的,容器在启动的时候在其上创建了一层可读写层. 2. 启动和终止容器 启动一个容器有两种方法,一种是从镜像创建一个容器并运行,另一种是重新启动处于终止状态的容器. 创建并启动 使用docker run命令从镜像创建并启动一个容器. 使用docker run命令创建容器时,后台执行的操作包括: - 检查本地是否存在该镜像,不存在就先从公有仓库下载 - 利用镜像创建并启动一个容器 - 分配一

STL学习笔记— —无序容器(Unordered Container)

简单介绍 在头文件<unordered_set>和<unordered_map> 中定义 namespace std { template <typename T, typename Hash = hash<T>, typename EqPred = equal_to<T>, typename Allocator = allocator<T> > class unordered_set; template <typename T

GEEK学习笔记— —STL容器list

简介 在头文件 <list> 中定义 namespace std { template <typename T, typename Allocator = allocator<T> > class list; } 列表是一个容器,它支持任何位置的元素快速插入和删除,不支持快速的随机访问.它被实现为双向的链表. 与forward_list相比,它提供双向迭代的能力,但空间效率更低. 插入和删除操作不会使指向其他元素指针.引用和迭代器失效. list操作 构造.复制与析构