vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

头文件:#include<vector>

参数:vector<int>v,  int为数据类型,也可以是string,long long,double

代码 

含义

v.push_back()

在vector最后添加一个元素

v.pop_back()

移除最后一个元素

v.insert()

插入元素到Vector中

v.back()

返回最末一个元素

v.begin()

返回第一个元素的迭代器

v.end() 

返回最末元素的迭代器(译注:实指向最末元素的下一个位置)

v.erase()

删除指定元素

v.size()

获取v的大小

v.empty()

判断v是否为空

v.clear()

清空向量中元素,但不清空内存

vv=v

复制

vv==v

比较:==、!=、>、>=、<、<=都可以用

基本使用方法:

#include<iostream>
#include<vector>
#include<string>
using namespace std; int main() { // 定义: vector<int>v; // 定义一个int型动态数组v
vector<int>v1(5, 2); // 定义一个int型大小为5,值为2的动态数组v1,int型值默认为零
vector<string>s(6, "hi"); // 定义一个string型大小为6,值为“hi”的动态数组s,string型值默认为“” v.push_back(7); // v不知道v大小,输入必须用push_back
//cin >> v1[1]; // v1知道大小,可以用cin for (int i = 0; i < v.size(); i++) // 第一种方法:
cout << v[i]; cout << "\n\n"; for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++)// 第二种方法:迭代器
cout << *it; cout << "\n\n"; // 插入 v:7 v1:22222 v1.insert(v1.begin(), 3); // 在v1头部插入3 结果:322222
v1.insert(v1.end(), 5); // 在v1尾部插入5 结果:3222225
v1.insert(v1.begin() + 2, 3, 6); // 在v1[2]前插入3个6 结果:3266622225
v1.insert(v1.begin(), v.begin(), v.end()); // 在v1头部插入v 结果:73266622225 // 删除 v1.erase(v1.begin()); // 删除首元素 结果:3266622225
v1.erase(v1.begin(), v1.begin() + 3); // 删除从v1.begin()到v1.begin() + 3之间的元素,不包括v1.begin() + 3
// 结果:6622225 // 二维的动态数组 vector<vector<int> > v2; // 定义一个int型,二维动态数组v2,两个大于号之间打个空格,否则有些编译器辨别不出
vector<vector<int> > v3(12); for (int i = 0; i < 10; i++) {
vector<int> t(i, i); //v2的类型是vector<int> 所以只能压入vector<int> 类型
v2.push_back(t); //压入i个i
}
v2.push_back(vector<int>(5, 3)); //压入5个3 for (int i = 0; i < v2.size(); i++) {
for (int j = 0; j < v2[i].size(); j++) {
cout << v2[i][j];
}
cout << "\n";
}
/*
输出结果: 1
22
333
4444
55555
666666
7777777
88888888
999999999
33333 */
return 0;
}

例题:

题目描述

n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.

输入输出格式

输入格式:

n m

输出格式:

出圈的编号

输入输出样例

输入样例#1:

10 3
输出样例#1:

3 6 9 2 7 1 8 5 10 4

说明

m,n≤100

vector:

#include<iostream>
#include<vector>
using namespace std;
int main() {
int n, m,ans=0;
vector<int>v;
cin >> n >> m;
if (n <= 0 || m <= 0)return 0; for (int i = 1; i <=n; i++) {
v.push_back(i);
} while (!v.empty()) { ans = (ans + m - 1) % v.size(); //因为每次都是站在第一个,再加上(m-1)个就行了
//要不断地mod,相当于不断地在一排数循环 cout << v[ans] << " "; v.erase(v.begin() + ans); //删除输出的元素
}
return 0;
}

  

vector:动态数组的更多相关文章

  1. C++ vector动态数组

    #include<vector>头文件 vector类称作向量类 百度百科的解释:https://baike.baidu.com/item/vector/3330482 我喜欢把知识点拿出 ...

  2. C++向量 vector动态数组

    需要包含头文件, #include  <vector>    using namespace std; vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所 ...

  3. Vector(动态数组)怎么用咧↓↓↓

    定义方式:vector<int> a; //二维vector<int>a[100] 在末尾压入容器:a.push_back(x);//二维 a[i].push_back(x) ...

  4. 八连通(vector动态数组法)

    题目和一般的八连通一样,但行数和列数未定,相乘对于1e6,直接开a[1e6][1e6]的数组肯定会爆内存.用二维的动态vector就能很好的解决这个问题 #include<bits/stdc++ ...

  5. C++ Vector 动态数组

    Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...

  6. vector动态数组

    vector是STL模板库中的序列式容器,利用它可以有效地避免空间的浪费. 创建vector容器 vector< int >v:vector< char >:vector< ...

  7. vc++简单的vector动态数组实现

    #ifndef __MYVECTOR__ #define __MYVECTOR__ #include <Windows.h> #define SUCCESS 1 // 成功 #define ...

  8. 转:用STL中的vector动态开辟二维数组

    用STL中的vector动态开辟二维数组 源代码:#include <iostream>#include <vector>using namespace std;int mai ...

  9. 学习日记--用Vector(向量)实现动态数组

    Vector的使用方法: 能在添加元素时增加长度的数组称为动态数组或可变长数组.相对地,必须事先指定长度,只能容纳一定数量元素的数组称为静态数组.下面分享一下如何借助STL(标准模板库)中的Vecto ...

随机推荐

  1. java ssm 后台框架平台 项目源码 websocket IM quartz springmvc

    A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器freemaker模版技术 ,0个 ...

  2. 搭建 github.io 博客站点

    前言 很多人都有搭建博客或知识库站点的想法,可自己买云服务器太不划算,部署管理也是个问题:基于免费又热门的 GitHub Pages 来搭建博客站点倒是省钱省力省事的好办法,于是上网一搜,满屏都是关于 ...

  3. latex 字母上面加符号

    加^号 输入\hat  或 \widehat 加横线 输入 \overline 加波浪线 输入 \widetilde 加一个点 \dot{要加点的字母} 加两个点\ddot{要加点的字母} 加箭头 输 ...

  4. Jquery 操作 select 的操作指南

    这里我们以一个简单的select作为原型来进行说明: <select> <option value="a1">香蕉1</option> < ...

  5. 闲谈Hybrid

    前言 当经常需要更换样式,产品迭代,那么我们应该考虑hybrid混合开发,上层使用Html&Css&JS做业务开发,底层透明化.上层多多样化,这种场景非常有利于前端介入,非常适合业务快 ...

  6. 简单的HTTP协议

    HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同,用于客户端和服务器之间的通信. 请求访问文本或图像等资源的一端称为客户端,提供资源响应的一端称为服务器端. 在两台计算机之间使用 HTTP ...

  7. 大数据学习之Hadoop环境搭建

    一.Hadoop的优势 1)高可靠性:因为Hadoop假设计算元素和存储会出现故障,因为它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理. 2)高扩展性:在集群间分配任务数据,可方便的 ...

  8. mysql的数据类型与表约束

    数据类型 (详细数据类型请参考:http://www.runoob.com/mysql/mysql-data-types.html) 数字 整型  tinyint int bigint 小数: flo ...

  9. linux mint系统 cinnamon桌面 发大镜功能

    让我来告诉迷途中的你cinnamon桌面一个好用的功能. 选择设置 选择窗口 -> 选择行为 看那个窗口移动和调整大小的特殊键 Alt 好了按住alt在滑动滑轮 世界不一样了 对于小屏幕高分辨率 ...

  10. 小Hi和小Ho的礼物

    题目:小Hi和小Ho的礼物 注:[i.j.p.q]为下标 个人感觉这道题是有一定难度的.读者可以参考一下[四平方和]的解题思路 分析过程下次补上 代码如下: #include <iostream ...