c++中 STL 组件的重要功能
原文:https://www . geesforgeks . org/重要功能-STL-of-components-in-c/
C++
// C++ code
#include <iostream>
#include <utility>
using namespace std;
int main()
{
// Declaring the PAIR1 of int and char
// IF pair is not initialized then ,
// default value of int/double is 0 and
// for string/char it is NULL
pair<int, char> PAIR1;
cout << PAIR1.first << " ";
// NULL value therefore, not displayed
cout << PAIR1.second
<< endl;
// Initializing the pair during it's Declaration
pair<string, double> PAIR2("GeeksForGeeks", 1.23);
cout << PAIR2.first << " ";
cout << PAIR2.second << endl;
pair<string, double> PAIR3;
// Inserting Value in pair using make_pair function
PAIR3 = make_pair("GeeksForGeeks is Best", 4.56);
cout << PAIR3.first << " ";
cout << PAIR3.second << endl;
pair<int, int> PAIR4;
// Inserting Value in pair using {}(curly brackets)
PAIR4 = { 4, 8 };
cout << PAIR4.first << " ";
cout << PAIR4.second << endl;
return 0;
}
STL 提供了一系列在各种场景中非常有用的数据结构。很多数据结构都是基于现实应用的。它是容器类、算法和迭代器的库。它是一个通用库,因此,它的组件是参数化的。
最常用的数据结构是:
容器或容器类存储对象和数据。总共有七个标准的“一级”容器类和三个容器适配器类,只有七个头文件提供对这些容器或容器适配器的访问。
注意:我们可以只包含一个库,即#包含<位/stdc++。h > 包括所有的 STL 库,但是在某些比赛中,包括这个库会让代码变慢。为了克服这个问题,我们可以添加特定的库来访问 STL 的特定数据结构。此外,在移除元素时,需要注意数据结构是否为空。对空数据结构调用 remove 函数会导致错误。以下是一些数据结构及其图示
- 向量 : 使用数组时的主要问题是我们必须指定大小。向量克服了这个缺点。向量在内部作为动态分配的数组工作,这是我们如何在不指定向量大小的情况下添加元素的主要原因。当向量的大小等于容量时,向量的容量增加,因此我们可以添加更多的元素。
头文件:
包括
语法:
向量变量 _ 名称;
向量最常见的函数:
- push_back(): 用于推送向量末尾的元素。要获得更快的方法,请使用定位 _ 后退()。
- pop_back(): 用于从向量中移除最后一个元素。
- size() :返回向量的大小。
- 清除():删除矢量的所有内容。
- erase() :删除指定的索引或数据。
- 空():如果向量为空,返回布尔值 True,否则返回 False。
- 迭代器下界(迭代器第一,迭代器最后,常量 val):下界返回一个迭代器,指向范围[第一,最后]中值不小于‘val’的第一个元素。
- 迭代器上界(迭代器第一,迭代器最后,常量 val):上界返回一个迭代器,指向范围【第一,最后】中的第一个元素,该元素的值大于“val”。
C++
// C++ program to illustrate the
// function of vector in C++
#include <iostream>
// Header file for vector if
// <bits/stdc++.h> not included
#include <vector>
using namespace std;
// Function to print the vector
void print(vector<int> vec)
{
// vec.size() gives the size
// of the vector
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << " ";
}
cout << endl;
}
// Driver Code
int main()
{
// Defining a vector
vector<int> vec;
// Put all natural numbers
// from 1 to 10 in vector
for (int i = 1; i <= 10; i++) {
vec.push_back(i);
}
cout << "Initial vector: ";
// print the vector
print(vec);
// Size of vector
cout << "Vector size: " << vec.size() << "\n";
// Check of vector is empty
if (vec.empty() == false)
cout << "Is vector is"
<< " empty: False\n";
// Popping out 10 form the vector
vec.pop_back();
cout << "Vector after popping: ";
print(vec);
// Deleting the first element
// from the vector using erase()
vec.erase(vec.begin());
cout << "Vector after erase"
<< " first element: ";
print(vec);
// Clear the vector
vec.clear();
cout << "Vector after "
<< "clearing: None ";
print(vec);
// Check if vector is empty
if (vec.empty() == true)
cout << "Is vector is"
<< " empty: True\n";
}
Output
Initial vector: 1 2 3 4 5 6 7 8 9 10
Vector size: 10
Is vector is empty: False
Vector after popping: 1 2 3 4 5 6 7 8 9
Vector after erase first element: 2 3 4 5 6 7 8 9
Vector after clearing: None
Is vector is empty: True
2。堆栈 : 是后进先出(LIFO)数据结构。它可以使用数组、链表和向量来实现。一些问题,如元素或字符串的反转、括号检查、打印下一个更大的元素、后缀表达式等,可以使用堆栈类来完成,而不是让所有的函数都使用它的内置函数。 头文件:
包括
语法:
栈变量 _ 名称;
堆栈最常见的功能:
- push(): 用于推栈顶元素。
- pop(): 删除栈顶元素,但不返回。
- top(): 返回堆栈的顶部元素。
- empty(): 返回布尔值,即如果堆栈为空则为 True,否则返回 false。
- size(): 返回堆栈的大小。
C++
// C++ program to illustrate the
// function of stack in C++
#include <iostream>
// Header file for stack
#include <stack>
using namespace std;
// Function to print the stack
void print(stack<char> s)
{
// Loops runs till stack
// becomes empty
while (s.empty() == false) {
// Prints the top element
cout << s.top() << " ";
// Now pops the same top element
s.pop();
}
cout << "\n";
}
// Driver Code
int main()
{
// Given char array
char array[]
= { 'G', 'E', 'E', 'K',
'S', 'F', 'O', 'R', 'G',
'E', 'E', 'K', 'S' };
// Defining stack
stack<char> s;
// Check if stack is empty
if (s.empty() == true) {
cout << "Stack is currently Empty"
<< "\n";
}
else {
cout << "Stack is not empty"
<< "\n";
}
// Push elements in stack
for (int i = sizeof(array) / sizeof(array[0]) - 1;
i >= 0; i--) {
s.push(array[i]);
}
// Size of stack
cout << "Size of stack: "
<< s.size() << "\n";
// Content of stack
cout << "Stack initially: ";
print(s);
// Returning the top
// element of the stack
cout << "Top element: "
<< s.top() << "\n";
// Popping the top
// element in stack
s.pop();
cout << "Stack after 1"
<< "pop operation: ";
print(s);
// Now checking the top element
cout << "Top element after popping: "
<< s.top() << "\n";
// Size of stack
cout << "Size of stack"
<< "after popping: "
<< s.size() << "\n";
// Again checking if the
// stack is empty
if (s.empty() == true) {
cout << "Stack is currently Empty"
<< "\n";
}
else {
cout << "Stack is not empty"
<< "\n";
}
return 0;
}
Output
Stack is currently Empty
Size of stack: 13
Stack initially: G E E K S F O R G E E K S
Top element: G
Stack after 1pop operation: E E K S F O R G E E K S
Top element after popping: E
Size of stackafter popping: 12
Stack is not empty
3。队列 : 是先进先出(FIFO)数据结构。我们要求队列的原因是使用了大量先进先出的实际应用,以及何时不需要提前处理数据。例如,在购买演出门票的队列中,先进入队列的人会先拿到门票。它可以像堆栈一样使用数组、链表和向量来实现。队列的一些应用包括树和图的级序遍历,资源共享等。 头文件:
包括
语法:
队列变量 _ 名称;
队列最常见的功能:
- push(): 用于推送队列后面的元素
- pop(): 删除队列的前元素,但不返回。
- front(): 返回队列的前元素,或行中第一个元素。
- empty(): 返回布尔值,即如果队列为空,则返回 True,否则返回 false
- back(): 返回队列的最后一个元素。
- size(): 返回队列的大小。
C++
// C++ program to illustrate the
// function of vector in C++
#include <iostream>
// Header file for queue
#include <queue>
using namespace std;
// Function to print the queue
void print(queue<char> q)
{
for (int i = 0; i < q.size(); i++) {
// Printing the front element
cout << q.front() << " ";
// Popping the front element
q.pop();
}
cout << "\n";
}
// Driver Code
int main()
{
// Given array
char array[]
= { 'G', 'E', 'E', 'K', 'S' };
// Defining queue
queue<char> q;
if (q.empty() == true) {
cout << "Queue is empty\n";
}
for (int i = 0; i < 5; i++) {
q.push(array[i]);
}
cout << "Queue Initially: ";
print(q);
// Front element
cout << "Front element: "
<< q.front() << "\n";
// Back element
cout << "Back Element: "
<< q.back() << "\n";
// Size of queue
cout << "Size of queue: "
<< q.size() << "\n";
// Empty
if (q.empty() == false) {
cout << "Queue is not empty\n";
}
return 0;
}
Output
Queue is empty
Queue Initially: G E E
Front element: G
Back Element: S
Size of queue: 5
Queue is not empty
版权属于:月萌API www.moonapi.com,转载请注明出处