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. 大数据框架-spark

    相关详细说明:https://www.csdn.net/article/2015-07-10/2825184 RDD:弹性分布式数据集. Operation:Transformation 和Actio ...

  2. 使用nuget过程中一些问题总结

    更新System.Web.Http组件以及其相关依赖项使用以下命令更新: Update-Package Microsoft.AspNet.WebApi –reinstall 如果没有这个引用,则先添加 ...

  3. js中哪些值会被认为false?

    在javascript中,只有 false null undefined 空字符串 即 “” 数字  0 数字 NaN 会被当作false,其余都是真. 注:字符串 “false” 也会被当作真.

  4. acm--1006

    Problem Description The three hands of the clock are rotating every second and meeting each other ma ...

  5. MySQL必知必会 读书笔记二:MySQL使用

    使用MySQL 选择数据库 使用USE关键字 USE database; 了解数据库和表 如果不知道可以使用的数据库名时,可用MySQL的SHOW命令来显示这些信息. SHOW DATABASES; ...

  6. [Java]Java 9运行Spring Boot项目报错的解决办法

    简介 为了学习和尽快掌握 Java 9 的模块化(Module System)新特性,最近安装了 JDK 9,新建了一个 Spring Boot 进行尝试, 过程中遇到了一下报错问题,写下此文谨作为个 ...

  7. Hive(8)-常用查询函数

    一. 空字段赋值 1. 函数说明 NVL:给值为NULL的数据赋值,它的格式是NVL( value,default_value).它的功能是如果value为NULL,则NVL函数返回default_v ...

  8. 使用ntp协议同步本地时间(C语言)

    使用ntp协议同步本地时间 同步服务器使用的东北大学网络授时服务:ntp.neu.edu.cn更多ntp服务器 http://www.ntp.org.cn/ 源代码来自网络,经本人精简ntp部分,供大 ...

  9. Manjaro Linux KDE个人的一些安装配置

    安装manjaro kde linux的个人步骤 1 换源 1.1 自动寻找最快的源 sudo pacman-mirrors -i -c China -m rank 1.2 修改源文件 sudo ge ...

  10. linux普通用户su root切换提示没有文件或目录

    1. 首先进入单用户模式: 1). ubuntu : 上述情况可以在grub界面选择第二项修复,但没有grub可以参考: 1.重启ubuntu,随即长按shirft进入grub菜单: 2.选择reco ...