C++ vector
来源:互联网 发布:易语言网络爬虫 编辑:程序博客网 时间:2024/06/08 04:40
有些时候想开一个数组,但是却不知道应该开多大长度的数组合适,因为我们需要用到的数组可能会根据情况变动。这时候我们就需要用到动态数组。所谓动态数组,也就是不定长数组,数组的长度是可以根据我们的需要动态改变的。动态数组的实现也不难,但是在 C++ 和 Java 里面有已经写好的标准模板库(Standard Template Library),就是我们常说的 STL 库,实现了集合、映射表、栈、队列等数据结构和排序、查找等算法。我们可以很方便地调用标准库来减少我们的代码量。
C++ 中动态数组写作vector, Java 中写作ArrayList,C 语言中没有标准库,因此非常建议 C/C++ 组的选手使用 C++ 进行比赛,即使你之前只用过 C 也没关系,因为 C 语言的代码几乎都可以被 C++ 编译器正确理解。用 C 语言同学尽管写的是 C 代码也尽量用 C++ 的方式编译。
引用库
C++ 中vector的实现在一个<vector>头文件中,在代码开头引入这个头文件,并在引入所有头文件之后加上一句using namespace std。
#include <vector>
using namespace std;
int main() {
return 0;
}
Java 中ArrayList在java.util.ArrayList包里面实现。通过import的方式引进库。
1
import java.util.ArrayList;
2
public class ArrayListTest {
3
public static void main(String[] args) {
4
5
}
6
}
构造一个动态数组
现在我们来构造一个动态数组。
C++ 中直接构造一个vector的语句为:vector<T> vec。这样我们定义了一个名为vec的储存T类型数据的动态数组。其中T是我们数组要储存的数据类型,可以是int、float、double、或者其他自定义的数据类型等等。初始的时候vec是空的。
Java 中通过 ArrayList<T> list = new ArrayList<T>() 构造一个储存T类型数据的ArrayList对象。
插入元素
C++ 中通过push_back()方法在数组最后面插入一个新的元素。
1
#include <vector>
2
using namespace std;
3
int main() {
4
vector<int> vec; // []
5
vec.push_back(1); // [1]
6
vec.push_back(2); // [1, 2]
7
vec.push_back(3); // [1, 2, 3]
8
return 0;
9
}
Java 中通过add()方法在数组最后面插入一个新的元素。
1
import java.util.ArrayList;
2
public class ArrayListTest {
3
public static void main(String[] args) {
4
ArrayList<Integer> list = new ArrayList<Integer>(); // []
5
list.add(1); // [1]
6
list.add(2); // [1, 2]
7
list.add(3); // [1, 2, 3]
8
}
9
}
获取长度并且访问元素
C++ 中通过size()方法获取vector的长度,通过[]操作直接操作访问vector中的元素,这一点和数组是一样的。
1
#include <vector>
2
#include <stdio.h>
3
using namespace std;
4
int main() {
5
vector<int> vec; // []
6
vec.push_back(1); // [1]
7
vec.push_back(2); // [1, 2]
8
vec.push_back(3); // [1, 2, 3]
9
for (int i = 0; i < vec.size(); ++i) {
10
printf("%d\n", vec[i]);
11
}
12
return 0;
13
}
Java 中也是通过size()方法获取长度,但是需要通过get(i)的方法获取第 ii 个位置的元素。
1
import java.util.ArrayList;
2
public class ArrayListTest {
3
public static void main(String[] args) {
4
ArrayList<Integer> list = new ArrayList<Integer>(); // []
5
list.add(1); // [1]
6
list.add(2); // [1, 2]
7
list.add(3); // [1, 2, 3]
8
for (int i = 0; i < list.size(); ++i) {
9
System.out.println(list.get(i));
10
}
11
}
12
}
修改元素
C++ 中修改vector中某个元素很简单,只需要用=给它赋值就好了,比如vec[1] = 3。
1
#include <vector>
2
#include <stdio.h>
3
using namespace std;
4
int main() {
5
vector<int> vec; // []
6
vec.push_back(1); // [1]
7
vec.push_back(2); // [1, 2]
8
vec.push_back(3); // [1, 2, 3]
9
vec[1] = 3; // [1, 3, 3]
10
vec[2] = 2; // [1, 3, 2]
11
for (int i = 0; i < vec.size(); ++i) {
12
printf("%d\n", vec[i]);
13
}
14
return 0;
15
}
Java 中若要将index位置上的元素更改为b,需要让对象调用set(index, b)方法。
1
import java.util.ArrayList;
2
public class ArrayListTest {
3
public static void main(String[] args) {
4
ArrayList<Integer> list = new ArrayList<Integer>(); // []
5
list.add(1); // [1]
6
list.add(2); // [1, 2]
7
list.add(3); // [1, 2, 3]
8
list.set(1, 3); // [1, 3, 3]
9
list.set(2, 2); // [1, 3, 2]
10
for (int i = 0; i < list.size(); ++i) {
11
System.out.println(list.get(i));
12
}
13
}
14
}
清空
C++ 和 Java 中都只需要调用clear()方法就可清空vector或者ArrayList。
C++ vector方法总结:
方法 功能
push_back 在末尾加入一个元素
pop_back 在末尾弹出一个元素
size 获取长度
clear 清空
Java ArrayList方法总结:
方法 功能
add 增加元素
get 获取元素
set 修改元素
size 获取长度
clear 清空
通过上面列举的方法,可以满足我们平时做题时的大多数需求。关于vector和ArrayList的更多方法,可以去参考文档,或者在网络上搜索资料查看。对于比赛来说,上面的方法已经足够了。
- C++Vector
- c++vector
- c++:vector
- <C++>vector
- C++vector
- 【c++】【vector】
- C++ vector
- c++: vector
- c ++ vector
- C++vector
- c++:vector
- C++<vector>
- C++Vector
- c/c++,vector
- 【c/c++】Vector入门
- [C++] 何时使用vector
- c++vector模板类
- c++vector模板类
- 机器学习12-支持向量机的数学上定义
- 06、React系列之--使用browserify管理
- I/O流
- 腾讯小白作业4.16.html
- 二叉树的最大深度
- C++ vector
- android DialogFragment添加动画
- 投掷硬币
- 二分图判断
- Spark2.X 原码分析 ---- Rpc初探
- 软链接/硬链接/fd
- 做产品的思路
- 用bash升级python第三方库
- 线程的互斥与同步通信-笔记整理3