C++标准版模板库(STL)简介与基本用法

1、vector动态数组

C++中的vector的实现在一个<vector>头文件中。

使用vector可以构造一个动态数组。C++中直接构造一个vector的语句为:vector<T>  v。这样我们就定义了一个名为v的存储T类型数据的动态数组。其中T使我们要存储的数据类型,可以是intdoublefloat、或者其他自定义的类型等等。初始的时候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,返回一个负整数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值