STL(一)(container,algorithm,iterator)

STL中的sort(),因为封装在命名空间std中,STL中的sort()算法编译为std::sort(),从而避免了名字名字冲突。
则有文件开头必加:using namespace std;
STL算法:用来操作容器中数据的模板函数,主要由头文件(“algorithm”,“numeric”,“functional”)组成。
STL大概包含了100个实现算法的模板函数,
eg:
STL用sort()对一个vector中的数据进行排序,用find搜索一个list中的对象。STL不仅可以对内置数据类型的数据进行排序,也可以对自定义的结构体数据排序,不仅可以递增排序,也可按照程序员的要进行排序(如递减)。
algorithm: 增,删,改,查,复制,排序,合并。
numeric: 只包含几个简单的数学运算的模板函数。
functional:其中定义了一些模板类,用于声明关系函数对象。
eg一个吧:
#include
using namespace std;
void main()
{
int a[] = { 2, 5, 4, 1, 3 };
sort(a, a + 5);
for (int i = 0; i < 5; i++)
printf("%d", a[i]);
printf("/n");
}
STL迭代器:用于访问容器中的数据对象。如何访问只有容器自己知道。
常有迭代器:
(1)iterator指向容器中存放元素的迭代器,正向遍历容器中的元素。
(2)const_iterator:指向容器中存放元素的常量迭代器,只能读取容器中的元素。
(3)reverse_iterator:指向容器中存放元素的反向迭代器,反向遍历容器中的元素。
(4)const_reverse_iterator:指向容器中存放元素的常量反向迭代器,只能读取容器中的元素。
下面以一个程序4次分别实现:
(1)#include
using namespace std;
void main()
{
vectormyv;
vector::iterator it;
myv.push_back(1);
myv.push_back(2);
myv.push_back(3);
for (it=myv.begin(); it!= myv.end(); ++it)
printf("%d", *it);
printf("\n");
}
(2)
#include
using namespace std;
void main()
{
vectormyv;
vector::const_iterator it;
myv.push_back(1);
myv.push_back(2);
myv.push_back(3);
for (it=myv.begin(); it!= myv.end(); ++it)
printf("%d", *it);
printf("\n");
}
(3)
#include
using namespace std;
void main()
{
vectormyv;
vector::reverse_iterator it;
myv.push_back(1);
myv.push_back(2);
myv.push_back(3);
for (it=myv.rbegin(); it!= myv.rend(); ++it)
printf("%d", *it);
printf("\n");
}
(4)
#include
using namespace std;
void main()
{
vectormyv;
vector::const_reverse_iterator it;
myv.push_back(1);
myv.push_back(2);
myv.push_back(3);
for (it=myv.rbegin(); it!= myv.rend(); ++it)
printf("%d", *it);
printf("\n");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值