stl第一部分: string, vector, deque, stack
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
// deque 的使用
|
||||
// deque 是一个双端队列,可以在队列的头部和尾部进行插入和删除操作
|
||||
|
||||
// deque 的常用操作
|
||||
// push_back() 在队列尾部插入元素
|
||||
// push_front() 在队列头部插入元素
|
||||
// front() 访问队列头部元素
|
||||
// back() 访问队列尾部元素
|
||||
// pop_front() 删除队列头部元素
|
||||
// pop_back() 删除队列尾部元素
|
||||
// size() 队列的大小
|
||||
// empty() 队列是否为空
|
||||
// clear() 清空队列
|
||||
// erase() 删除指定位置的元素
|
||||
// insert() 在指定位置插入元素
|
||||
// operator[] 访问指定位置的元素
|
||||
// at() 访问指定位置的元素
|
||||
// begin() 返回指向队列头部的迭代器
|
||||
// end() 返回指向队列尾部的迭代器
|
||||
// rbegin() 返回指向队列尾部的逆向迭代器
|
||||
// rend() 返回指向队列头部的逆向迭代器
|
||||
// swap() 交换两个队列
|
||||
// emplace() 在指定位置构造元素
|
||||
// emplace_front() 在队列头部构造元素
|
||||
// emplace_back() 在队列尾部构造元素
|
||||
// resize() 改变队列的大小
|
||||
// assign() 赋值
|
||||
// get_allocator() 返回队列的配置器
|
||||
// max_size() 返回队列最大可以存储的元素数量
|
||||
// shrink_to_fit() 将内存减少到等于当前元素数量所需的大小
|
||||
// cbegin() 返回指向队列头部的常量迭代器
|
||||
// cend() 返回指向队列尾部的常量迭代器
|
||||
|
||||
#include <iostream>
|
||||
#include <deque>
|
||||
|
||||
int main()
|
||||
{
|
||||
std::deque<int> dq;
|
||||
|
||||
dq.push_back(1); // 在队列尾部插入元素
|
||||
dq.push_front(2); // 在队列头部插入元素
|
||||
|
||||
std::cout << "Front: " << dq.front() << std::endl; // 访问队列头部元素
|
||||
std::cout << "Back: " << dq.back() << std::endl; // 访问队列尾部元素
|
||||
|
||||
dq.pop_front(); // 删除队列头部元素
|
||||
dq.pop_back(); // 删除队列尾部元素
|
||||
|
||||
std::cout << "Size: " << dq.size() << std::endl; // 队列的大小
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
int m[] = {1, 2, 3, 4, 5, 6};
|
||||
deque<int> d1;
|
||||
deque<int> d2(m, m + 6);
|
||||
|
||||
deque<int>::iterator it = d2.begin();
|
||||
while (it != d2.end())
|
||||
{
|
||||
cout << *it << " ";
|
||||
it++;
|
||||
}
|
||||
cout << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
template <typename T>
|
||||
void print(deque<T> &dq)
|
||||
{
|
||||
typename deque<T>::iterator it = dq.begin();
|
||||
while (it != dq.end())
|
||||
{
|
||||
cout << *it << " ";
|
||||
it++;
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int m[] = {1, 2, 3, 4, 5, 6};
|
||||
deque<int> d1;
|
||||
deque<int> d2(m, m + 6);
|
||||
|
||||
deque<int> d4 = d2; // 拷贝构造函数: deque(const deque &deq)
|
||||
print(d4);
|
||||
|
||||
d1 = d2; // 赋值运算符: deque& operator=(const deque &deq)
|
||||
print(d1);
|
||||
|
||||
print(d2);
|
||||
|
||||
deque<int> d3(10, 1); // 10 个 1
|
||||
print(d3);
|
||||
|
||||
cout << "d5.swap(d2):" << endl;
|
||||
deque<int> d5;
|
||||
d5.swap(d2);
|
||||
print(d5);
|
||||
print(d2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
#include <iostream>
|
||||
#include <deque>
|
||||
|
||||
using namespace std;
|
||||
|
||||
class Person
|
||||
{
|
||||
friend void print(deque<Person> &dq);
|
||||
|
||||
private:
|
||||
string name;
|
||||
int age;
|
||||
|
||||
public:
|
||||
Person(string name, int age) : name(name), age(age) {}
|
||||
};
|
||||
|
||||
void print(deque<Person> &dq)
|
||||
{
|
||||
deque<Person>::iterator it = dq.begin();
|
||||
while (it != dq.end())
|
||||
{
|
||||
cout << (*it).name << ", " << (*it).age << endl;
|
||||
;
|
||||
it++;
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
deque<Person> dq;
|
||||
dq.push_front(Person("张三", 18));
|
||||
dq.push_back(Person("李四", 19));
|
||||
dq.push_front(Person("王五", 20));
|
||||
print(dq);
|
||||
|
||||
cout << "--------" << endl;
|
||||
dq.pop_back();
|
||||
dq.pop_front();
|
||||
print(dq);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#include <iostream>
|
||||
#include <deque>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
deque<string> d1;
|
||||
// d1.resize(5);
|
||||
cout << "d1.size():" << d1.size() << ", d1.empty():" << d1.empty() << endl;
|
||||
|
||||
try
|
||||
{
|
||||
cout << d1[15] << endl;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
cout << "错误" << endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
deque<string> d1(5, "disen");
|
||||
d1.push_front("jack");
|
||||
d1.push_back("mack");
|
||||
d1.insert(d1.begin() + 1, "lucy");
|
||||
cout << "first element is: " << d1.front() << endl;
|
||||
cout << "last element is: " << d1.back() << endl;
|
||||
|
||||
deque<string>::iterator it = d1.begin();
|
||||
cout << "second element is: " << *(it + 1) << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
// deque 的插入操作
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
template <typename T>
|
||||
void print(deque<T> &dq)
|
||||
{
|
||||
typename deque<T>::iterator it = dq.begin();
|
||||
while (it != dq.end())
|
||||
{
|
||||
cout << *it << " ";
|
||||
it++;
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
deque<string> d1(5, "disen");
|
||||
print(d1);
|
||||
|
||||
d1.insert(d1.begin() + 1, "jack");
|
||||
print(d1);
|
||||
|
||||
string m[] = {"a", "b", "c", "d", "e"};
|
||||
// 将 m 中的 bcd 插入到 d1 中的 第二个 disen 后面
|
||||
d1.insert(d1.begin() + 3, m + 1, m + 4);
|
||||
print(d1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
// deque 的删除操作
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
template <typename T>
|
||||
void print(deque<T> &dq)
|
||||
{
|
||||
typename deque<T>::iterator it = dq.begin();
|
||||
while (it != dq.end())
|
||||
{
|
||||
cout << *it << " ";
|
||||
it++;
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
string m[] = {"a", "b", "c", "d", "e"};
|
||||
deque<string> dq(m, m + 5);
|
||||
print(dq);
|
||||
|
||||
deque<string>::iterator del_it = dq.begin() + 1;
|
||||
// for (int i = 0; i < 3; i++)
|
||||
// {
|
||||
// // dq.erase() 会删除当前元素并返回下一个元素的迭代器
|
||||
// del_it = dq.erase(del_it);
|
||||
// }
|
||||
|
||||
// 第二种删除方式
|
||||
dq.erase(del_it, del_it + 3);
|
||||
|
||||
print(dq);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user