1.string类容器
#include<iostream>
#include<algorithm>
#include<functional>
#include<string>
using namespace std;
void StrDefine()
{
string str0;
cout << str0 << "" << str0.empty() << endl;
string str1(5, 'a');
cout << str1 << "" << str1.empty() << endl;
string str2("abcdef");
cout << str2 << endl;
string str3("ghjadc", 3);
cout << str3 << endl;
string str4(str2, 2, 3);
cout << str4 << endl;
string str5("qwer", 0, 2);
cout << str5 << endl;
string str6(str2);
cout << str6 << endl;
}
void StrAttribute()
{
string str0;
cout << "str0字符串为空字符串" << str0 << endl;
cout << "str0字符串容量为"<<str0.capacity() << endl;
cout << "str0字符串长度为" << str0.length() << endl;
string str1(16, 'a');
cout << "str1字符串为" << str1 << endl;
cout << "str1字符串容量为" << str1.capacity() << endl;
string str2(5,'h');
cout << "str2字符串为" << str2 << endl;
cout << "str2字符串初始容量为" << str2.capacity() << endl;
str2.reserve(16);
cout << "增加后str2字符串容量为"<< str2.capacity()<< endl;
cout << "str2字符串长度为" << str2.length() << endl;
string str3("ghjadc");
cout << "str3字符串为" << str3 << endl;
cout << "str3字符串长度为" << str3.length() << endl;
cout << "str3字符个数为" << str3.size() << endl;
str3.resize(3);
cout << "截断后str3字符串变为" << str3 << endl;
cout << "截断后str3字符个数为" <<str3.size() << endl;
cout << "截断后str3字符串长度为" << str3.length() << endl;
cout << "截断后str3字符串容量为" << str3.capacity() << endl;
}
void StrCout()
{
string str6("qkjhgf");
cout << "重载输出运算符输出对象str6为"<<str6 << endl;
cout << "c_str()函数输出为 "<< str6.c_str() << endl;
cout <<"str6对象按[下标] 输出单个字符为"<< str6[0] << endl;
cout << "at()函数按下标输出单个字符为" << str6.at(2) << endl;
try
{
str6.at(9);
}
catch (...)
{
cout << "下标越界中断" << endl;
}
}
void StrChange()
{
string str7("mnbcvz");
cout << "原来的str7字符串为 " << str7 << endl;
str7[0] = 'a';
str7.at(5) = 'x';
cout << "修改后的str7字符串为 " << str7 << endl;
}
void StrCompare()
{
string str8("abcd");
string str9("abe");
cout << "重载比较运算符结果为" << (str8 >= str9) << endl;
cout << "str8调用compare函数与str9比较结果为" << str8.compare(str9) << endl;
cout << "str8调用compare函数与具体字符串比较结果为" << str8.compare("aac") << endl;
cout << "str8调用compare函数中间一段与str9比较结果为" << str8.compare(1, 2, str9) << endl;
cout << "str8调用compare函数中间一段与str9中间一段比较结果为" << str8.compare(1, 2, str9, 1, 2) << endl;
}
void StrCopy()
{
string str10("hjgkazx");
char ArrStr[6] = { 0 };
str10.copy(ArrStr, 4, 2);
cout <<"调用copy复制后的字符数组为"<< ArrStr << endl;
}
void StrFind()
{
string str11("qabcergf");
string str12("abc");
cout << "从str11中寻找str12结果为 "<<str11.find(str12, 0) << endl;
cout <<"从str12中寻找str11结果为 "<< (int)str12.find(str11, 0) << endl;
cout << "从str12中寻找字符b的结果为 " << str12.find('b', 1);
cout << "返回str11的字串结果为" << str11.substr(2, 5) << endl;
}
void StrSwap()
{
string str13("mnbvz");
string str14("asdfg");
cout << "交换前str13为" << str13 << endl;
cout << "交换前str14为" << str14 << endl;
str13.swap(str14);
cout << "交换后str13为" << str13 << endl;
cout << "交换后str14为" << str14 << endl;
cout <<"str13+str14结果为(str13在前面)"<< (str13 + str14) << endl;
}
void FunIterator()
{
string str15("asdfgh");
string::iterator ite;
ite = str15.begin();
for (int i = 0; i < str15.size();i++)
{
cout << ite[i] << " ";
}
cout<<endl;
ite[2] = 'c';
cout << str15 << endl;
string str16("abcweq");
string str17("jkl");
cout<<"str16为" << str16 << endl;
cout<<"str17为" << str17 << endl;
cout << "str16调用append后为" << str16.append(str17.begin(), str17.end()) << endl;
str16.erase(str16.begin());
cout << "str16调用erase删除单个字符后为" << str16 << endl;
str16.erase(str16.begin() + 1, str16.begin() + 4);
cout<< "str16调用erase删除一段字符串后为"<<str16 << endl;
str16.insert(str16.begin() + 2, 3,'H');
cout <<"str16在第三个字符位置插入字符串后为"<< str16 << endl;
str16.insert(str16.begin() + 3, str17.begin()+1,str17.end());
cout << "str16在第4个字符位置插入str17中的一段字符串后为" << str16 << endl;
}
void BLHS(char c)
{
cout << c;
}
void StrFor_each()
{
string str18("zxcvbnqwer", 6);
cout << "str18遍历输出为";
for_each(str18.begin(), str18.end(), BLHS);
cout << endl;
sort(str18.begin(), str18.end());
cout << "str18默认从小到大排序后遍历输出为";
for_each(str18.begin(), str18.end(), BLHS);
cout << endl;
sort(str18.begin(), str18.end(), greater<char>());
cout << "str18指定从大到小排序遍历输出为";
for_each(str18.begin(), str18.end(), BLHS);
cout << endl;
}
void ShowMenu()
{
cout << "***1.string定义***" << endl;
cout << "***2.string属性***" << endl;
cout << "***3.输出string***" << endl;
cout << "***4.修改string***" << endl;
cout << "***5.比较string***" << endl;
cout << "***6.复制string***" << endl;
cout << "***7.查找string***" << endl;
cout << "***8.交换string***" << endl;
cout << "***9.string迭代器***" << endl;
cout << "***10.string遍历算法***" << endl;
cout << endl;
}
int main()
{
int choice;
char Wcontinue;
ShowMenu();
while (true)
{
cout << "请输入您的选择:" ;
cin >> choice;
switch (choice)
{
case 1:StrDefine(); break;
case 2:StrAttribute(); break;
case 3:StrCout(); break;
case 4:StrChange(); break;
case 5:StrCompare(); break;
case 6:StrCopy(); break;
case 7:StrFind(); break;
case 8:StrSwap(); break;
case 9:FunIterator(); break;
case 10:StrFor_each(); break;
default:cout << "非法输入!!!" << endl;
}
cout << "如果你想继续输入请按y,否则按其他任意键结束!" << endl;
getchar();
Wcontinue = getchar();
if (Wcontinue == 'y')
continue;
else
break;
}
system("pause");
return 0;
}
2.vector容器(动态数组)
#include<iostream>
#include<vector>
#include<algorithm>
#include<ctime>
using namespace std;
void VectorDefine()
{
vector<int>vec;
struct STU
{
int age;
};
vector<struct STU>sss;
vector<int*>qwe;
vector<string>str;
vector<char>ccc;
}
void VectorConstructor()
{
vector<int>vec;
vector<int>vec1(5);
cout << "vec1输出结果为" << endl;
for (int i = 0; i < 5; i++)
{
cout << vec1[i]<<endl;
}
vector<int>vec2(3,12);
cout << "int型vec2输出结果为" << endl;
for (int i = 0; i < 3; i++)
{
cout << vec2[i] << endl;
}
vector<char>vec3(3,'a');
cout << "char型vec3输出结果为" << endl;
for (int i = 0; i < 3; i++)
{
cout << vec3[i] << endl;
}
vector<int>vec4(vec2);
cout << "vec2给vec4初始化输出结果为" << endl;
for (int i = 0; i < 2; i++)
{
cout << vec4[i] << endl;
}
vector<int>vec6(6, 3);
vector<int>::iterator ite1=vec6.begin();
vector<int>::iterator ite2 = vec6.end();
vector<int>vec5(ite1, ite2);
cout << "使用迭代器输出vec5结果为" << endl;
for (int i = 0; i < 4; i++)
{
cout << vec5[i] << endl;
}
}
void VectorCapacity()
{
vector<int>vec6;
cout<<"空vec6容量为" << vec6.capacity()<<endl;
vector<int>vec7(5);
cout << "vec7容量为" << vec7.capacity() << endl;
vec7.push_back(1);
cout << "增加1次后vec7容量为" << vec7.capacity() << endl;
vec7.push_back(1);
vec7.push_back(1);
cout << "增加2次后vec7容量为" << vec7.capacity() << endl;
vector<int>vec8(8);
cout << "原vec8容量为" << vec8.capacity() << endl;
vec8.reserve(6);
cout << "修改后vec8容量为" << vec8.capacity() << endl;
vec8.reserve(13);
cout<<"修改后vec8容量为"<<vec8.capacity()<<endl;
}
void VectorSize()
{
vector<int>vec9(9);
vec9.reserve(11);
cout << "修改容量为11后vec9的容量为为" << vec9.capacity() << endl;
cout<<"修改容量为11后vec9的元素个数为"<<vec9.size() << endl;
vector<int>vec10(10);
cout << "vec10初始元素个数为" << vec10.size() << endl;
cout << "vec10初始容量为" << vec10.capacity() << endl;
vec10.resize(7);
cout << "重新设置元素个数为7后vec10的容量为为" << vec10.capacity() << endl;
cout << "重新设置元素个数为7后vec10的元素个数为" << vec10.size() << endl;
vec10.resize(13);
cout << "重新设置元素个数为13后vec10的容量为为" << vec10.capacity() << endl;
cout << "重新设置元素个数为13后vec10的元素个数为" << vec10.size() << endl;
vector<int>vec11;
vector<int>vec12(3,6);
cout<<"vec11执行empty()函数结果:"<<vec11.empty()<<endl;
cout<<"vec12执行empty()函数结果:"<<vec12.empty()<<endl;
}
void fun(int i)
{
cout << i<< endl;
}
void VectorCout()
{
vector<int>vec13;
for (int i = 0; i <5; i++)
{
vec13.push_back(i);
}
cout << "使用下标输出vec13中第2个元素为:" << vec13[1]<<endl;
cout <<"使用at(i)函数输出vec13中第3个元素为:"<< vec13.at(2) << endl;
cout << "调用back()函数输出vec13尾元素为:" << vec13.back() << endl;
cout << "使用下标输出vec13结果为:"<<endl;
for (int i = 0; i < 5; i++)
{
cout << vec13[i] << endl;
}
cout << "调用at(i)函数输出vec13结果为:" << endl;
for (int i = 0; i < 5; i++)
{
cout << vec13.at(i) << endl;
}
vector<int>::iterator ddq1=vec13.begin();
vector<int>::iterator ddq2=vec13.end();
cout << "使用迭代器输出vec14结果为"<< endl;
for (ddq1; ddq1!=ddq2; ddq1++)
{
cout << *ddq1<<endl;
}
cout << "调用for_each输出vec13结果为:"<<endl;
for_each(vec13.begin()+1, vec13.end(), fun);
}
void VectorAdd()
{
vector<int>vec14;
for (int i = 0; i < 6; i++)
{
vec14.push_back(i);
}
vec14.insert(vec14.begin()+1, 66);
vec14.insert(vec14.begin() + 3,3,33);
vector<int>vec15(5, 8);
vec14.insert(vec14.end(),vec15.begin()+1, vec15.begin() + 4);
for_each(vec14.begin(), vec14.end(), fun);
}
void VectorDelete()
{
vector<int>vec16;
for (int i = 0; i < 7; i++)
{
vec16.push_back(i);
}
vec16.pop_back();
cout << "删除1个尾部元素" << endl;
for_each(vec16.begin(), vec16.end(), fun);
vec16.erase(vec16.begin() + 1);
cout << "删除指定位置的一个元素" << endl;
for_each(vec16.begin(), vec16.end(), fun);
vec16.erase(vec16.begin() + 3, vec16.end());
cout << "删除指定一段元素" << endl;
for_each(vec16.begin(), vec16.end(), fun);
vec16.clear();
cout << "删除全部元素" << endl;
for_each(vec16.begin(), vec16.end(), fun);
}
void VectorSwap_sort()
{
vector<int>vec17;
vec17.push_back(2);
vec17.push_back(5);
vec17.push_back(1);
vec17.push_back(3);
vec17.push_back(6);
vector<int>vec18;
vec18.push_back(4);
vec18.push_back(0);
vec18.push_back(1);
vec18.push_back(2);
vec18.push_back(9);
cout << "交换前vec17:" << endl;
for_each(vec17.begin(), vec17.end(), fun);
cout << "交换前vec18:" << endl;
for_each(vec18.begin(), vec18.end(), fun);
vec17.swap(vec18);
cout << "交换后vec17" << endl;
for_each(vec17.begin(), vec17.end(), fun);
cout << "交换后vec18" << endl;
for_each(vec18.begin(), vec18.end(), fun);
sort(vec17.begin(), vec17.end());
cout << "vec17全部从小到大排序后" << endl;
for_each(vec17.begin(), vec17.end(), fun);
sort(vec18.begin(), vec18.begin() + 3);
cout << "vec18部分从小到大排序后" << endl;
for_each(vec18.begin(), vec18.end(), fun);
sort(vec17.begin(), vec17.end(), greater<int>());
cout << " vec17全部从大到小排序为" << endl;
for_each(vec17.begin(), vec17.end(),fun);
srand((unsigned int)time(0));
random_shuffle(vec17.begin(), vec17.end());
cout << " vec17乱序输出为" << endl;
for_each(vec17.begin(), vec17.end(), fun);
}
void ShowMenu()
{
cout << "***1.vector定义***" << endl;
cout << "***2.vector构造函数***" << endl;
cout << "***3.vector容量***" << endl;
cout << "***4.vector元素个数***" << endl;
cout << "***5.vector输出***" << endl;
cout << "***6.vector插入***" << endl;
cout << "***7.vector删除***" << endl;
cout << "***8.vector交换及排序***" << endl;
}
int main()
{
int choice;
char Wcontinue;
ShowMenu();
while (true)
{
cout << "请输入您的选择:";
cin >> choice;
switch (choice)
{
case 1:VectorDefine(); break;
case 2:VectorConstructor(); break;
case 3:VectorCapacity(); break;
case 4:VectorSize(); break;
case 5:VectorCout(); break;
case 6:VectorAdd(); break;
case 7:VectorDelete(); break;
case 8:VectorSwap_sort(); break;
default:cout << "非法输入!!!" << endl;
}
cout << "如果你想继续输入请按y,否则按其他任意键结束!" << endl;
getchar();
Wcontinue = getchar();
if (Wcontinue != 'y')
break;
}
system("pause");
return 0;
}
3.List容器
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
struct Node
{
int a;
char c;
};
void fun1(Node&d)
{
cout << d.a << " " << (int)d.c<<endl;
}
void fun2(Node&d)
{
cout << d.a << " " << d.c << endl;
}
void ListDefine()
{
cout << "输出lt结果" << endl;
list<Node>lt;
for_each(lt.begin(), lt.end(), fun1);
cout << "输出lt1结果" << endl;
list<Node>lt1(5);
for_each(lt1.begin(), lt1.end(), fun1);
cout << "输出lt2结果" << endl;
Node no2 = { 11,'x' };
list<Node>lt2(3,no2);
for_each(lt2.begin(), lt2.end(), fun2);
cout << "拷贝lt2输出lt3结果" << endl;
list<Node>lt3(lt2);
for_each(lt3.begin(), lt3.end(), fun2);
cout << "拷贝lt3输出lt4结果" << endl;
list<Node>lt4(lt3.begin(),lt3.end());
for_each(lt4.begin(), lt4.end(), fun2);
cout << "利用迭代器输出lt5结果为" << endl;
list<Node>::iterator ite1;
ite1 = lt4.begin();
ite1++;
list<Node>::iterator ite2 = lt4.end();
ite2--;
list<Node>lt5(ite1, ite2);
for_each(lt5.begin(), lt5.end(),fun2);
}
void ListSize()
{
Node no = { 6 ,'p'};
list<Node>lt6(3,no);
cout<<"lt6大小为" << lt6.size() << endl;
for_each(lt6.begin(), lt6.end(), fun2);
cout<< "调用empty结果:" << lt6.empty() << endl;
lt6.resize(5);
cout << "lt6大小为" << lt6.size() << endl;
for_each(lt6.begin(), lt6.end(), fun2);
lt6.resize(0);
cout << "lt6大小为" << lt6.size() << endl;
cout << "调用empty结果:" << lt6.empty() << endl;
}
void ListCout()
{
Node no = { 9,'m' };
list<Node>lt7(4, no);
for (list<Node>::iterator ite1 = lt7.begin(); ite1 != lt7.end(); ite1++)
{
cout << ite1->a << " " << ite1->c << endl;
}
cout << endl;
cout <<"返回尾元素"<< lt7.back().a << " " << lt7.back().c << endl;
cout <<"返回头元素"<< lt7.front().a << " " << lt7.front().c << endl;
}
struct ST
{
char x;
int z;
ST(char e,int d )
{
x = e;
z = d;
}
bool operator==(const ST&k)
{
if (k.x == this->x && k.z == this->z)
{
return true;
}
return false;
}
bool operator< (const ST&p)
{
if (p.x > this->x )
return true;
return false;
}
};
void fun3(ST&y)
{
cout << y.x << " " << y.z << endl;
}
void ListAdd()
{
ST st1( 'q',15 );
list<ST>lt9(6,st1);
list<ST>lt8;
cout << "头尾分别添加后" << endl;
lt8.push_front(ST ('a',199 ));
lt8.push_back(st1);
for_each(lt8.begin(), lt8.end(), fun3);
cout << "insert指定位置插入单元素后" << endl;
list<ST>::iterator ite3 = lt8.begin();
lt8.insert(ite3, ST('g', 77));
for_each(lt8.begin(), lt8.end(), fun3);
cout << "insert插入多元素后" << endl;
ite3--;
lt8.insert(ite3,3, ST('j', 98));
for_each(lt8.begin(), lt8.end(), fun3);
cout << "insert插入另一个向量的中间一段后" << endl;
list<ST>::iterator ite9 = lt9.begin();
ite9++;
lt8.insert(ite3,ite9, lt9.end());
for_each(lt8.begin(), lt8.end(), fun3);
}
void ListDelete()
{
list<ST>lt10;
lt10.push_back(ST('a', 12));
lt10.push_back(ST('b',13));
lt10.push_front(ST('C', 15));
lt10.push_back(ST('D', 11));
lt10.push_back(ST('E', 32));
lt10.push_front(ST('H', 17));
lt10.push_front(ST('Q', 85));
cout << "删除前lt10为" << endl;
for_each(lt10.begin(), lt10.end(), fun3);
lt10.pop_front();
lt10.pop_back();
cout << "删除首尾元素后lt10为" << endl;
for_each(lt10.begin(), lt10.end(), fun3);
cout << "删除一段元素后lt10为" << endl;
list<ST>::iterator ite1 = lt10.begin();
lt10.erase(ite1, --lt10.end());
for_each(lt10.begin(), lt10.end(), fun3);
lt10.clear();
lt10.push_back(ST('a', 12));
lt10.push_back(ST('b', 13));
lt10.push_back(ST('C', 15));
lt10.push_back(ST('C', 15));
lt10.push_back(ST('D', 11));
lt10.push_back(ST('C', 15));
lt10.push_back(ST('a', 17));
lt10.push_back(ST('a',55 ));
cout << "重新添加元素后再删除" << endl;
lt10.erase(--lt10.end());
for_each(lt10.begin(), lt10.end(), fun3);
cout << "删除指定元素后" << endl;
lt10.remove(ST('b', 13));
for_each(lt10.begin(), lt10.end(), fun3);
cout << "删除连续的重复元素其中一个后" << endl;
lt10.unique();
for_each(lt10.begin(), lt10.end(), fun3);
}
void ListAssign()
{
Node n1 = { 76,'v' };
list<Node>lt11(3,n1);
list<Node>::iterator ite1 = lt11.begin();
cout << "初始状态lt11为" << endl;
for_each(ite1, lt11.end(),fun2);
list<Node>lt12;
lt12.assign(++ite1, lt11.end());
cout << "用lt11中的一段赋值给lt12后,lt12为" << endl;
for_each(lt12.begin(), lt12.end(),fun2);
Node n2 = { 98,'k' };
lt12.assign(5, n2);
cout << "直接用定义的结点n2赋值给lt12为" << endl;
for_each(lt12.begin(), lt12.end(), fun2);
lt12 = lt11;
cout << "重载“=”赋值运算符将lt11赋值给lt12为" << endl;
for_each(lt12.begin(), lt12.end(), fun2);
}
void ListOther()
{
list<ST>lt13;
lt13.push_back(ST('a', 12));
lt13.push_back(ST('b', 13));
lt13.push_back(ST('g', 15));
lt13.push_back(ST('d', 15));
lt13.push_back(ST('e', 11));
cout << "初始lt13为" << endl;
for_each(lt13.begin(), lt13.end(), fun3);
list<ST>lt14(5, ST('H', 88));
cout << "初始lt14为" << endl;
for_each(lt14.begin(), lt14.end(),fun3);
lt13.swap(lt14);
cout << "交换后lt13为" << endl;
for_each(lt13.begin(), lt13.end(), fun3);
cout << "交换后lt14为" << endl;
for_each(lt14.begin(), lt14.end(), fun3);
lt14.reverse();
cout << "逆置后lt14为" << endl;
for_each(lt14.begin(), lt14.end(), fun3);
lt14.sort();
cout << "重载运算符“<”并且只按字符从小到大排序后lt14为" << endl;
for_each(lt14.begin(), lt14.end(), fun3);
list<ST>lt15;
lt15.push_back(ST('m', 146));
lt15.push_back(ST('n', 45));
lt15.push_back(ST('o',35));
lt15.merge(lt14);
cout << "lt15和lt14合并后输出" << endl;
for_each(lt15.begin(), lt15.end(), fun3);
list<ST>lt16;
lt16.push_back(ST('w', 16));
lt16.push_back(ST('c', 4));
lt16.push_back(ST('g', 5));
cout << "lt16元素输出为" << endl;
for_each(lt16.begin(), lt16.end(), fun3);
list<ST>::iterator ite15 = lt15.begin();
lt16.splice(lt16.end(),lt15,++ite15,--lt15.end());
cout << "lt16从尾部拼接lt15一段后为" << endl;
for_each(lt16.begin(), lt16.end(), fun3);
list<ST>::iterator ite11=find(lt16.begin(), lt16.end(), ST('w', 16));
cout << "查找结果为" << ite11->x << ite11->z << endl;
}
void ShowMenu()
{
cout << "***1.List定义***" << endl;
cout << "***2.List大小***" << endl;
cout << "***3.List输出***" << endl;
cout << "***4.List增加***" << endl;
cout << "***5.List删除***" << endl;
cout << "***6.List赋值***" << endl;
cout << "***7.List其他操作***" << endl;
cout << "***8.***" << endl;
cout << "***9.***" << endl;
}
int main()
{
int choice;
char Wcontinue;
ShowMenu();
while (true)
{
cout << "请输入您的选择:";
cin >> choice;
switch (choice)
{
case 1:ListDefine(); break;
case 2:ListSize(); break;
case 3:ListCout(); break;
case 4:ListAdd(); break;
case 5:ListDelete(); break;
case 6:ListAssign(); break;
case 7:ListOther(); break;
default:cout << "非法输入!!!" << endl;
}
cout << "如果你想继续输入请按y,否则按其他任意键结束!" << endl;
getchar();
Wcontinue = getchar();
if (Wcontinue != 'y')
break;
}
system("pause");
return 0;
}
4.deque双端队列
#include<iostream>
#include<deque>
using namespace std;
int main()
{
deque<int>dq1;
dq1.push_front(3);
dq1.push_front(1);
dq1.push_front(2);
dq1.pop_front();
deque<int>::iterator ite1 = dq1.begin();
for (ite1; ite1 != dq1.end(); ite1++)
{
cout << *ite1 << endl;
}
system("pause");
return 0;
}
5.map有序容器
#include<iostream>
#include<map>
#include<algorithm>
#include<functional>
using namespace std;
void fun1(pair<int, char>pr)
{
cout << pr.first << " " << pr.second << endl;
}
void MapConstructor()
{
map<int, char>mp1;
typedef pair<int, char> in_pair;
mp1.insert(in_pair(2, 'a'));
mp1.insert(pair<int, char>(1, 'b'));
pair<map<int, char>::iterator, bool>pi;
pi = mp1.insert(in_pair(3, 'q'));
cout <<"先插入3,'q'结果为" <<pi.second << endl;
pi = mp1.insert(in_pair(3, 'w'));
cout << "再插入3,'w'结果为" << pi.second<<endl;
mp1.insert(pair<int, char>(5, 'e'));
mp1.insert(pair<int, char>(7, 'r'));
map<int, char>::iterator ite1 = mp1.begin();
ite1++;
ite1++;
ite1++;
ite1++;
mp1.insert(ite1, pair<int, char>(4, 'd'));
cout << "mp1为" << endl;
for_each(mp1.begin(), mp1.end(), fun1);
map<int, char>mp2;
mp2.insert(pair<int, char>(6, 'p'));
mp2.insert(++mp1.begin(), mp1.end());
cout << "mp2为" << endl;
for_each(mp2.begin(), mp2.end(), fun1);
map<int, char>mp3(mp1);
cout << "map3为" << endl;
for_each(mp3.begin(), mp3.end(), fun1);
map<int, char>mp4(++mp1.begin(), --mp1.end());
cout << "mp4为" << endl;
for_each(mp4.begin(), mp4.end(), fun1);
map<int, char>mp13;
mp13.insert(pair<int, char>(78, 'p'));
mp13 = mp1;
cout << "mp1直接给mp13赋值为" << endl;
for_each(mp13.begin(), mp13.end(), fun1);
}
void MapAttribute()
{
map<int, char>mp5;
mp5.insert(pair<int, char>(2, 'a'));
mp5.insert(pair<int, char>(4, 's'));
mp5.insert(pair<int, char>(6, 'e'));
mp5.insert(pair<int, char>(5, 'd'));
cout << "mp5大小为" << mp5.size() << endl;
cout << "mp5某个元素是否存在:" <<mp5.count(1)<< endl;
cout << "mp5某个元素是否存在:" << mp5.count(4) << endl;
cout << "mp5是否为空:" << mp5.empty() << endl;
map<int, char>::iterator ite1 = mp5.begin();
cout << "mp5修改实值后循环输出为:" << endl;
ite1->second = 'z';
for (ite1; ite1 != mp5.end(); ite1++)
{
cout << ite1->first << " " << ite1->second << endl;
}
}
void MapDelete()
{
map<int, char>mp6;
mp6.insert(pair<int, char>(0, 'f'));
mp6.insert(pair<int, char>(2, 'c'));
mp6.insert(pair<int, char>(4, 'v'));
mp6.insert(pair<int, char>(43, 'r'));
mp6.insert(pair<int, char>(5, 'i'));
mp6.insert(pair<int, char>(7, 'p'));
cout << "初始时mp6为" << endl;
for_each(mp6.begin(), mp6.end(), fun1);
mp6.erase(mp6.begin());
cout << "删除指定单个元素后mp6为" << endl;
for_each(mp6.begin(), mp6.end(),fun1);
mp6.erase(++mp6.begin(),--mp6.end());
cout << "删除指定一段元素后mp6为" << endl;
for_each(mp6.begin(), mp6.end(), fun1);
mp6.erase(43);
cout << "按键值删除单个元素后mp6为" << endl;
for_each(mp6.begin(), mp6.end(), fun1);
mp6.clear();
cout << "清除全部元素mp6为" << endl;
for_each(mp6.begin(), mp6.end(), fun1);
}
void MapFind()
{
map<int, char>mp7;
mp7.insert(pair<int, char>(9, 'f'));
mp7.insert(pair<int, char>(5, 'c'));
mp7.insert(pair<int, char>(7, 'v'));
mp7.insert(pair<int, char>(51, 'r'));
mp7.insert(pair<int, char>(12, 'i'));
mp7.insert(pair<int, char>(14, 'p'));
map<int, char>::iterator ite1;
ite1= mp7.find(9);
cout << ite1->first << " " << ite1->second << endl;
map<int, char>::iterator ite2;
ite2 = mp7.find(88);
if (mp7.find(88) == mp7.end())
cout << "确实是" << endl;
else
cout << "不是呢" << endl;
}
void MapGreater_Swap()
{
map<int, char,greater<int>>mp8;
mp8.insert(pair<int, char>(3, 'f'));
mp8.insert(pair<int, char>(6, 'c'));
mp8.insert(pair<int, char>(7, 'v'));
mp8.insert(pair<int, char>(51, 'r'));
mp8.insert(pair<int, char>(12, 'i'));
mp8.insert(pair<int, char>(14, 'p'));
map<int, char, greater<int>>::iterator ite1=mp8.begin();
cout << "逆置定义mp8输出为" << endl;
for_each(ite1, mp8.end(), fun1);
map<int, char,greater<int>>mp9;
mp9.insert(pair<int, char>(89, 'k'));
mp9.insert(pair<int, char>(86, 'l'));
mp9.insert(pair<int, char>(55, 'h'));
cout << "交换前mp9为" << endl;
for_each(mp9.begin(), mp9.end(), fun1);
mp9.swap(mp8);
cout << "交换后mp9为" << endl;
for_each(mp9.begin(), mp9.end(), fun1);
}
void MapOther()
{
map<int, char>mp10;
mp10.insert(pair<int, char>(1, 'g'));
mp10.insert(pair<int, char>(3, 'h'));
mp10.insert(pair<int, char>(5, 'j'));
mp10.insert(pair<int, char>(9, 's'));
mp10.insert(pair<int, char>(14, 'a'));
cout << "mp10为" << endl;
for_each(mp10.begin(), mp10.end(), fun1);
cout << "lower_bound寻找存在的键值3的结果" << mp10.lower_bound(3)->first << endl;
cout << "lower_bound寻找不存在的键值4的结果" << mp10.lower_bound(4)->first << mp10.lower_bound(4)->second;
cout << endl;
cout << "upper_bound寻找存在的键值3的结果为" << mp10.upper_bound(3)->first << endl;
cout << "upper_bound寻找不存在的键值4的结果为" << mp10.lower_bound(4)->first << endl;
pair<map<int, char>::iterator, map<int, char>::iterator>ret;
ret = mp10.equal_range(2);
cout << "键值有4,equal_range(2)结果为" <<endl;
cout << ret.first->first << " " << ret.first->second << endl;
cout << ret.second->first<<" " << ret.second->second << endl;
ret = mp10.equal_range(9);
cout << "键值没有9,equal_range(9)结果为" << endl;
cout << ret.first->first << " " << ret.first->second << endl;
cout << ret.second->first << " " << ret.second->second << endl;
}
void ShowMenu()
{
cout << "***1.Map构造函数***" << endl;
cout << "***2.Map属性***" << endl;
cout << "***3.Map删除***" << endl;
cout << "***4.Map查找***" << endl;
cout << "***5.Map逆序定义输出及交换***" << endl;
cout << "***6.Map其他操作***" << endl;
cout << "***7.Map***" << endl;
cout << "***8.***" << endl;
cout << "***9.***" << endl;
}
int main()
{
ShowMenu();
int choice;
char Wcontinue;
while (true)
{
cout << "请输入您的选择:";
cin >> choice;
switch (choice)
{
case 1:MapConstructor(); break;
case 2:MapAttribute(); break;
case 3:MapDelete(); break;
case 4:MapFind(); break;
case 5:MapGreater_Swap(); break;
case 6:MapOther(); break;
default: cout << "What is your problem?!" << endl;
}
cout << "if you want to continue,please press y! " << endl;
cout << "else press any others!" << endl;
cin.get();
Wcontinue = cin.get ();
if (Wcontinue != 'y')
break;
}
system("pause");
return 0;
}
6.set容器
#include<iostream>
#include<set>
#include<string>
using namespace std;
void SetConstructor()
{
set<string>st1;
st1.insert("acx");
st1.insert(string("czd"));
st1.insert("basd");
st1.insert("bdzsa");
set<string>::iterator ite1 = st1. begin();
cout << "st1为" << endl;
for (ite1; ite1 != st1.end();ite1++)
{
cout << *ite1 << endl;
}
cout << endl;
}
void SetDefine()
{
set<string>st2;
st2.insert("adw");
st2.insert(string("qwe"));
st2.insert("qwed");
st2.insert("zsa");
cout <<"st2是否为空:"<< st2.empty() << endl;
cout << "st2尺寸为:";
cout << st2.size() << endl;
cout << "count(we)结果:";
cout<<st2.count("we")<<endl;
cout << "count(adw)结果:";
cout << st2.count("adw")<<endl;
}
int main()
{
SetConstructor();
SetDefine();
system("pause");
return 0;
}