C++ 数组和vector的基本操作
1、静态数组的基本操作
int a[5] = {0, 3, 4, 6, 2};
1.1 数组的遍历
1.1.1 传统的for循环遍历
int size = sizeof(a) / sizeof(*a);
for(int i = 0; i < size; i++)
cout << a[i] << " ";
sizeof()是一个操作符(operator),返回对象或类型所占内存空间的字节数。
sizeof(a),返回数组a所占内存空间的字节数;sizeof(*a),返回数组a首元素所占内存空间的字节数。两者相除即为数组长度。
1.1.2 C++11基于范围的for循环遍历
for(int& item:a)
cout << item << " ";
for依次循环,item依次作为每个元素的引用。
1.2 数组的sort排序
#include <algorithm>
using namespace std;
sort()包含在头文件<algorithm>中,定义在命名空间std中。
sort(a, a + size);
for(int& item:a)
cout << item <<" ";
sort()可以传入三个参数。第一个参数为要排序数组的首地址,第二个参数为要排序数组的尾地址,第三个参数制定排序类型(从小到大or从大到小)。第三个参数可以省略,默认从小到大排;且第三个参数用起来比较麻烦,若有从大到小的需求,可以先从小到大排,之后倒序输出。
2、基于vector容器的动态数组的基本操作
数组的大小不能发生变化,需要在初始化时指定数组的大小。有时它会非常不方便并可能造成浪费。因此,大多数编程语言都提供内置的动态数组,它仍然是一个随机存取的列表数据结构,但大小是可以发生改变的。例如,在 C++ 中的vector。
#include <vector>
用到vector模板类时,要注意引用头文件<vector>。
2.1 定义及初始化
// 1. initialize
vector<int> v0;
vector<int> v1(5, 0);//v1有5个元素,均为0
// 2. make a copy
vector<int> v2(v1.begin(), v1.end());
vector<int> v3(v2);
// 3. cast an array to a vector
int a[5] = {0, 1, 2, 3, 4};
vector<int> v4(a, *(&a + 1));
定义v4时,传入两个参数a和*(&a+1),两个都是指针。a指向数组的首元素地址,&a为指向数组指针的指针,加一后就直接跨越了一个数组长度,再用*取值后,*(&a + 1)为指向数组尾元素的地址。
2.2 三种遍历方式
cout << "[Version 1] The contents of v4 are:";
for (int i = 0; i < v2.size(); ++i) {
cout << " " << v2[i];
}
cout << endl;
cout << "[Version 2] The contents of v4 are:";
for (int& item : v4) {
cout << " " << item;
}
cout << endl;
cout << "[Version 3] The contents of v4 are:";
for (auto item = v4.begin(); item != v4.end(); ++item) {
cout << " " << *item;
}
cout << endl;
vector用方括号[]加数字的方式访问内部具体的某个元素。
v.size()返回vector的长度。
v.begin()返回vector的首地址,v.end返回vector的尾地址。
auto自身并不是一种数据类型,其只是一种给对象自动匹配类型的机制。
2.3 排序及在尾部插入、删除
// sort
sort(v4.begin(), v4.end());
// add new element at the end of the vector
v4.push_back(-1);
// delete the last element
v4.pop_back();
v.push_back(x)在vector尾部添加元素x,v.pop_back()删除最后一个元素。
C++ 数组和vector的基本操作的更多相关文章
- Java数组与vector互转
Java数组与vector互转 /* Object[] object1 = null ; //数组定义 Vector<Object> object2;//Vector定义 object2 ...
- 用vector容器代替数组 ——使用数组初始化vector对象
在C++中,我们不能用数组直接初始化另一数组,而只能创建新的数组,然后显式的把原数组的元素逐个复制给新的数组. 按照C语言中的做法: const size_t arry_size=6; int int ...
- C++中数组和vector
本文基于邓俊辉编著<数据结构(C++语言版)(第3版)>.<C++ Primer(第5版)>以及网上的相关博文而写,博主水平有限,若有不妥处,欢迎指出. 一.数组 C++中数组 ...
- 混编用到 C++中数组和vector 复习下大学课本
本文基于邓俊辉编著<数据结构(C++语言版)(第3版)>.<C++ Primer(第5版)>以及网上的相关博文而写,博主水平有限,若有不妥处,欢迎指出. 一.数组 C++中数组 ...
- 获取一个数组(vector)与查找值(value)的差最小绝对值的成员索引的算法
代码如下: 函数作用:传递进来一个数组(vector),和一个需要查找的值(value),返回与value的差值绝对值最小的vector成员索引,若value不在vector范围中,则返回-1: in ...
- C++数组或vector求最大值最小值
可以用max_element()及min_element()函数,二者返回的都是迭代器或指针. 头文件:#include<algorithm> 1.求数组的最大值或最小值 1)vector ...
- C++从array数组向vector向量复制元素的两种方式
#include <iostream> #include <vector> using namespace std; int main() { const int arr_si ...
- (STL初步)不定长数组:vector
STL是指C++的标准模板库.(存储着一些常用的算法和容器) vector是一个不定长数组.它把一些常用的操作”封装“在vector类型内部. 例如,a是一个vector.1对元素的操作有,可以用a. ...
- OAF_开发系列17_实现OAF数组应用Vector / Hashmap / Hashtable / Arraylist(案例)
20150506 Created By BaoXinjian
随机推荐
- Java TreeMap使用
场景: 随机生成50个10到50的数字.然后顺序输出每个数字出现的次数 实现原理: 使用TreeMap,默认带了顺序排序的功能 public static void main(String[] arg ...
- 枚举(Enum)
enum是一个全新的“类”. 枚举(Enum): 我们所定义的每个枚举类型都继承自java.lang.Enum类.枚举中的每个成员都是public static final的. 当您使用“enum”定 ...
- 阿里云ECS,Ubuntu Server 16.04安装图形界面远程控制
最近阿里云有新用户免费体验6个月的活动,虽说是免费体验,但是还是要买个它们的产品才行,我就花9.9买了个最便宜的,然后就获得了一个乞丐版的ECS服务器,配置是1核内存1G.系统装的是Ubuntu Se ...
- IDEA一些自动补全方式
第一种:系统自带:可以CTRL + j 可以查看 psvm 也就是public static void main的首字母. 依次还有在方法体内键入for会有一个fori的提示,选中然后tab键,就会自 ...
- shell编程系列1--shell脚本中的变量替换
shell编程系列1--shell脚本中的变量替换 变量替换总结: .${变量#匹配规则} # 从头开始匹配,最短删除 .${变量##匹配规则} # 从头开始匹配,最长删除(贪婪模式) .${变量%匹 ...
- RabbitMQ 入门教程(PHP版) 使用rabbitmq-delayed-message-exchange插件实现延迟功能
延迟任务应用场景 场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时. 场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单. 场景三:过1分钟给新 ...
- 报错:Configured broker.id 68 doesn't match stored broker.id 113 in meta.properties
报错背景: CDH中安装完成kafka的组件后不能成功启动,发现UI界面中的broker.id和服务器中的broker.id不一致, 因此更改了服务器中broker.id 但是更改完成之后还是报错. ...
- PAT 甲级 1064 Complete Binary Search Tree (30 分)(不会做,重点复习,模拟中序遍历)
1064 Complete Binary Search Tree (30 分) A Binary Search Tree (BST) is recursively defined as a bin ...
- Dockerfile-server1
[root@lab2 docker-file]# cd server1/ [root@lab2 server1]# ls a.sh ddbes-server1-0.0.1-SNAPSHOT.jar D ...
- 【Leetcode_easy】893. Groups of Special-Equivalent Strings
problem 893. Groups of Special-Equivalent Strings 题意: 感觉参考代码也是有点问题的... 参考 1. Leetcode_easy_893. Grou ...