1、vector动态数组
C++中的vector的实现在一个<vector>头文件中。
使用vector可以构造一个动态数组。C++中直接构造一个vector的语句为:vector<T> v。这样我们就定义了一个名为v的存储T类型数据的动态数组。其中T使我们要存储的数据类型,可以是int、double、float、或者其他自定义的类型等等。初始的时候v是空的。
在不知道数组长度和邻接链表时常用到,基本用法如下:
- 1. push_back() 在数组最后面插入一个元素
- 2.size() 返回数组的大小
- 3.clear() 清空数组
- 4.pop_back() 弹出末尾的元素
- 5.访问第i元素 直接使用下标(跟普通数组一样)
- 6.swap() 将一个动态数组与另一个动态数组交换;例如:b.swap(x)[将数组x与数组b交换
- 7.back() 返回动态数组中最后一个元素
- 8. q = p 将p动态数组赋值给q
例题:
2、queue 队列
定义:队列本身就是一种先进先出的限制性数据结构
操作
- 1.front() 访问队首元素
- 2.back() 访问队尾元素
- 3.push() 在队尾加入一个元素
- 4.pop() 抛出队首元素
- 5.empty() 判断队列是否为空
- 6.size() 返回队列中元素个数
3、set集合
集合:是一个内部自动有序且不含重复元素的容器
- 1.insert(x) 将x插入到set容器中,并自动递增排序和去重
- 2.find(x) 返回x在set中所在的位置
- 3.erase() 删除一个元素或删除一个区间的元素(常配合find()来删除一个区间的元素)
- 4.size() 返回set的大小
- 5.count(x) 判断x是否在set中
- 6.clear() 清空set
- 注意:遍历set需要用到迭代器
参考代码:
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
int main()
{
set<int> a;
set<int> b;
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
int x;
cin >> x;
a.insert(x);
}
for (int i = 0; i < m;i++)
{
int x;
cin >> x;
b.insert(x);
}
//遍历b数组将b数组的各个元素依次放入a中
for (set<int>::iterator it = b.begin(); it != b.end(); it++)
{
a.insert(*it);
}
int num = a.size();
//遍历a数组中的元素输出
for (set<int>::iterator it = a.begin(); it != a.end(); it++)
{
cout << *it;
num--;
if (num != 0) cout << " ";
}
//system("pause");
return 0;
}
4、string 基本用法
string str; //定义一个字符数组
1.可以使用下标访问str中的元素
2.可以使用迭代器访问set中的元素
例如:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "abcdef";
for (string::iterator it = str.begin(); it != str.end(); it++)
{
cout << *it;
}
system("pause");
return 0;
}
string常用函数
1.两个string的字符串可以直接用‘+’连接起来
例如: string str1,str2; str1 += str2(将str2拼接在str1的后面)
2.string类型的字符串可以直接使用 == != > < <= >= 比较大小,比较的规则是字典序。
3.length()/size() 返回字符串的大小(长度)
4.find(str1) 返回str1在str中第一次出现的位置
5.replace(str1) 用str1替换str
编程小技巧
1.strncpy函数的用法
strncpy 是 C语言的库函数之一,来自 C语言标准库,定义于 string.h,char *strncpy(char *dest, const char *src, int n),
把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回dest。
区别:
strcpy只是复制字符串,但不限制复制的数量,很容易造成缓冲溢出。strncpy要安全一些。
strncpy能够选择一段字符输出,strcpy则不能。
2.strcmp函数的用法
字符串比较函数,一般形式为strcmp(字符串1,字符串2)。
比较规则:
对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止。如果全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。
如果两个字符串都由英文字母组成,则有一个简单的规律:在英文字典中位置在后面的为“大”,还要特别注意:小写字母比大写字母“大”。
返回值:
(1)字符串1==字符串2,返回0
(2)字符串1>字符串2,返回一个正整数
(3)字符串1<字符串2,返回一个负整数。