deque容器
deuqe的构造函数
#include<deque>
#include<algorithm>
void pringfDeque(const deque<int> &d) // 让deuqe容器里的数据只读 不可以修改
{
for (deque<int> ::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
deque<int> d1;
for (int i = 0; i < 10; i++)
{
d1.push_back(i + 1);
}
pringfDeque(d1);
deque<int> d2(d1.begin(), d1.end());
pringfDeque(d2);
deque<int>d3(10, 100);
pringfDeque(d3);
deque<int> d4(d3);
pringfDeque(d4);
}
deuqe的赋值操作
#include<deque>
#include<algorithm>
void pringfDeque(const deque<int> &d) // 让deuqe容器里的数据只读 不可以修改
{
for (deque<int> ::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
deque<int> d1;
for (int i = 0; i < 10; i++)
{
d1.push_back(i + 1);
}
pringfDeque(d1);
// operator=赋值
deque<int> d2;
d2 = d1;
pringfDeque(d2);
// assign赋值
deque<int> d3;
d3.assign(d1.begin(), d1.end());
pringfDeque(d3);
deque<int>d4;
d4.assign(10, 100);
pringfDeque(d4);
}
deuqe容器的大小操作
#include<deque>
#include<algorithm>
void pringfDeque(const deque<int> &d) // 让deuqe容器里的数据只读 不可以修改
{
for (deque<int> ::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
deque<int> d1;
for (int i = 0; i < 10; i++)
{
d1.push_back(i + 1);
}
pringfDeque(d1);
if (d1.empty())
{
cout << "容器为空" << endl;
}
else
{
cout << "d1不为空" << endl;
cout << "d1的大小为: " << d1.size() << endl;
}
// 重新指定大小
d1.resize(18);
pringfDeque(d1);
d1.resize(17, 2);
d1.resize(3);
}
deuqe插入和删除
#include<deque>
#include<algorithm>
void pringfDeque(const deque<int> &d) // 让deuqe容器里的数据只读 不可以修改
{
for (deque<int> ::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
deque<int> d1;
for (int i = 0; i < 10; i++)
{
d1.push_back(i + 1);
}
d1.push_front(3); // 头插
pringfDeque(d1);
d1.pop_back(); // 尾删
d1.pop_front(); // 头删
pringfDeque(d1);
// insert插入
d1.insert(d1.begin(), 100);
d1.insert(d1.begin(), 2, 100);
pringfDeque(d1);
// 按照区间来进行插入
deque<int> d2;
d2.push_back(3);
d2.push_back(5);
d2.insert(d2.begin(), d1.begin(), d1.end()); // 这是在d2.begin() 的位置插入d1.begin() d1.end() 里面的数据插入
pringfDeque(d2);
// 删除
deque<int> ::iterator it = d2.begin();
it = it + 9;
d2.erase(it);
pringfDeque(d2);
// 清空
d1.clear();
}
deque数据的存取
#include<deque>
#include<algorithm>
void pringfDeque(const deque<int> &d) // 让deuqe容器里的数据只读 不可以修改
{
for (deque<int> ::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
deque<int> d1;
for (int i = 0; i < 10; i++)
{
d1.push_back(i + 1);
}
d1.push_front(3);
for (int i = 0; i < d1.size(); i++)
{
cout << d1[i] << " ";
}
cout << endl;
for (int i = 0; i < d1.size(); i++)
{
cout << d1.at(i) << " ";
}
cout << endl;
cout << "d1的第一个元素为:" << d1.front() << endl;
cout << "d1的最后一个元素为:" << d1.back() << endl;
}
deque容器的排序
#include<deque>
#include<algorithm>
void pringfDeque(const deque<int> &d) // 让deuqe容器里的数据只读 不可以修改
{
for (deque<int> ::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
deque<int> d1;
for (int i = 0; i < 10; i++)
{
d1.push_back(i + 1);
}
d1.push_back(3);
d1.push_front(5);
pringfDeque(d1);
// 排序
sort(d1.begin(), d1.end());
cout << "排序后: ";
pringfDeque(d1);
}
案例
#include<deque>
#include<vector>
#include<algorithm>
#include<ctime>
class Person
{
public:
Person(string name, int score)
{
m_name = name;
m_score = score;
}
int m_score;
string m_name;
};
void creatPerson(vector<Person> &v)
{
string nameSeed = "ABCDE";
for (int i = 0; i < 5; i++)
{
string name = "选手";
name += nameSeed[i];
int score = 0;
Person p(name, score);
v.push_back(p);
}
}
void SetScore(vector<Person>& v)
{
for (vector<Person> ::iterator it = v.begin(); it != v.end(); it++)
{
deque<int> d1;
for (int i = 0; i < 10; i++)
{
int score = rand() % 41 + 60; // 60 - 100的分数之间
d1.push_back(score);
}
sort(d1.begin(), d1.end());
d1.pop_back();
d1.pop_front();
int sum = 0;
for (deque<int> :: iterator dit = d1.begin(); dit != d1.end(); dit++)
{
sum += *dit;
}
int avg = sum / d1.size();
it->m_score = avg;
}
}
void ShowScore(vector<Person>& v)
{
for (vector<Person> ::iterator it = v.begin(); it != v.end(); it++)
{
cout << "选手" << it->m_name << "的分数为: " << it->m_score << endl;
}
}
int main()
{
srand((unsigned int) time(NULL));
vector<Person> v1; // 存放选手的容器
creatPerson(v1);
SetScore(v1);
ShowScore(v1);
return 0;
}