C++中的各种容器的使用方法汇总
本攻略介绍了C++中的常用容器的使用方法,包括:数组,向量,列表,栈,队列,映射和集合等。
数组
数组是C++中最基本的容器,它存储固定大小的相同类型元素。数组的大小在声明时就已经指定,而且不能随意改变。
以下是数组的基本定义和初始化方法:
int arr[5]; //定义一个数组,包含五个整数元素
int arr[5] = {1, 2, 3, 4, 5}; //定义一个包含五个整数元素的数组,并初始化元素
向量
向量是一个动态数组,允许在运行时添加、删除元素。为了使用向量,需要包含头文件<vector>
。
以下是向量的基本定义和初始化方法:
vector<int> vec; //定义一个空向量
vector<int> vec(5); //定义一个包含五个元素的向量
vector<int> vec{1, 2, 3, 4, 5}; //定义一个包含五个元素的向量,并初始化元素
向向量添加元素的方法如下:
vec.push_back(10); //向向量中添加一个整数10
列表
列表是一个双向链表,允许在任何位置添加和删除元素。为了使用列表,需要包含头文件<list>
。
以下是列表的基本定义和初始化方法:
list<int> lst; //定义一个空列表
list<int> lst{1, 2, 3, 4, 5}; //定义一个包含五个元素的列表,并初始化元素
向列表添加元素的方法如下:
lst.push_back(10); //向列表尾部添加一个整数10
lst.push_front(9); //向列表头部添加一个整数9
栈
栈是一个后进先出(LIFO)的容器。为了使用栈,需要包含头文件<stack>
。
以下是栈的基本定义和初始化方法:
stack<int> stk; //定义一个空栈
向栈添加和删除元素的方法如下:
//向栈中添加元素
stk.push(10);
stk.push(20);
//从栈中删除元素
stk.pop();
队列
队列是一个先进先出(FIFO)的容器。为了使用队列,需要包含头文件<queue>
。
以下是队列的基本定义和初始化方法:
queue<int> que; //定义一个空队列
向队列添加和删除元素的方法如下:
//向队列中添加元素
que.push(10);
que.push(20);
//从队列中删除元素
que.pop();
映射
映射是一种关联数组,将一个键与一个值相关联。为了使用映射,需要包含头文件<map>
。
以下是映射的基本定义和初始化方法:
map<string, int> mp; //定义一个空映射
向映射添加、查找和删除元素的方法如下:
//向映射中添加元素
mp["apple"] = 10;
mp["orange"] = 20;
//从映射中查找元素
if (mp.find("apple") != mp.end())
{
cout << "Found apple: " << mp["apple"] << endl;
}
//从映射中删除元素
mp.erase("apple");
集合
集合是一组唯一的元素。集合不允许重复元素。为了使用集合,需要包含头文件<set>
。
以下是集合的基本定义和初始化方法:
set<int> st; //定义一个空集合
向集合添加、查找和删除元素的方法如下:
//向集合中添加元素
st.insert(10);
st.insert(20);
//从集合中查找元素
if (st.find(10) != st.end())
{
cout << "Found 10" << endl;
}
//从集合中删除元素
st.erase(10);
示例
向量示例
以下示例展示了如何使用向量实现一个可动态添加和删除元素的整数数组:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
//定义一个向量,用于存储整数
vector<int> myvector;
//向向量中添加元素
for (int i=1; i<=5; i++) myvector.push_back(i*10);
//输出向量中的元素
cout << "myvector contains:";
for (auto it = myvector.begin(); it != myvector.end(); ++it)
cout << ' ' << *it;
cout << '\n';
//从向量中删除最后一个元素
myvector.pop_back();
//输出删除后向量中的元素
cout << "myvector contains:";
for (auto it = myvector.begin(); it != myvector.end(); ++it)
cout << ' ' << *it;
cout << '\n';
return 0;
}
输出结果为:
myvector contains: 10 20 30 40 50
myvector contains: 10 20 30 40
映射示例
以下示例展示了如何使用映射实现一个字符串计数程序,该程序接受用户输入的字符串,并计算每个单词出现的次数:
#include <iostream>
#include <map>
#include <string>
#include <cctype>
using namespace std;
int main()
{
//定义一个映射,用于存储单词出现的次数
map<string,int> wordcount;
//接受用户输入的字符串
string line;
getline(cin, line);
//遍历字符串中的每个单词
string word;
for (auto c : line)
{
if (isalpha(c)) //遇到字母,将其添加到当前单词中
{
word += tolower(c);
}
else if (word != "") //遇到非字母字符,并且当前单词不为空,将其添加到映射中
{
if (wordcount.find(word) == wordcount.end())
{
wordcount[word] = 1;
}
else
{
wordcount[word] += 1;
}
word = "";
}
}
//处理字符串末尾的单词
if (wordcount.find(word) == wordcount.end())
{
wordcount[word] = 1;
}
else
{
wordcount[word] += 1;
}
//输出单词计数结果
for (auto it : wordcount)
{
cout << it.first << " : " << it.second << endl;
}
return 0;
}
假设用户输入的字符串是hello world how are you world
,则输出结果为:
are : 1
hello : 1
how : 1
world : 2
you : 1
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中的各种容器的使用方法汇总 - Python技术站