C++ STL标准程序库初探



C++ STL标准程序库初探

  首先解决一个vs2010中按crtl+f5后,CMD闪烁后消失突然消失的问题:

    在你的项目条目(project)上右击鼠标,在弹出菜单上选择最后一项“property/属性,在左边的一栏里找到配置属性->链接器->系统,点击系统项后,在右边的栏的子系统(subSystem将刻项的值配置为"Console(/SUBSYSTEM:CONSOLE)"
    经过这样的配置后,再按 Ctrl+F5,程序运行完毕后就会停留在控制台界面,提示你按任意键继续。 就这样,问题完美解决。 

标准模板库(STL):主要包含3个部分,STL容器,STL 迭代器STL 算法

1STL 容器

顺序容器

std::vectorstd::dequestd::list

关联容器

std::setstd::multisetstd::mapstd::multimap

2STL 迭代器

前向迭代器、双向迭代器、随机访问迭代器

3STL 算法

std::findstd::find_ifstd::reversestd::transform

 

#include <iostream>//标准库
#include <vector> //STL容器
#include <algorithm> //STL算法

using namespace std;

int main()
{
	
	vector<int> v; //v是一个变量, v的类型是vector<int>

	v.push_back(1);
	v.push_back(2);
	v.push_back(34);
	v.push_back(9);
	v.push_back(19);
    v.push_back(29);
    v.push_back(39);
	v.push_back(49);

	cout << "向量v里面的数据为: " << endl;

	vector<int>::iterator i = v.begin();//迭代器初始化的时候指向的是v中的第一个数据元素
	//由end操作返回的迭代器指向vector的“末端元素的下一个”。通常称为超出末端迭代器(off-the-end iterator),表明它指向了一个不存在的元素。
	while(i != v.end())//stl中的遍历算法
	{
		cout << *i << endl;//迭代器实质上就是一个指针
		++i;//迭代器在自加,也就是说迭代器在不断的向后移动
	}

	//STL中的查找算法
	vector<int>::iterator iElement = find(v.begin(),v.end(),49);

	if(iElement != v.end())
	{
		int nPosition = distance(v.begin(),iElement);
		cout << "Value: " << *iElement << endl;
		cout << "位置: " << nPosition << endl;
	}


	return 0;
}



运行结果:



beginend操作

    每种容器都定义了一对命名为beginend的函数,用于返回迭代器。如果容器中有元素的话,由begin返回的迭代器指向第一个元素:

vector<int>::iterator iter = v.begin();

上述语句把iter初始化为由名为beginvector操作返回的值。假设vector不空,初始化后,iter即指该元素为v[0]

    end操作返回的迭代器指向vector的“末端元素的下一个”。通常称为超出末端迭代器(off-the-end iterator),表明它指向了一个不存在的元素。如果vector为空,begin返回的迭代器与end返回的迭代器相同。

end操作返回的迭代器并不指向vector中任何实际的元素,相反,它只是起一个哨兵(sentinel)的作用,表示我们已处理完vector中所有元素。

 

 

参考资料:

C++ STL标准程序库

http://blog.sina.com.cn/s/blog_6f3ce2370100qvhh.html



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
太强大了,作为C++程序员,你该懂的!!!!! 内容简介   C++ 标准程序库提供一组通用类别(classes)和接口(interfaces),可大幅扩充 C++ 核心语言。由于程序库本身并不容易,为了完整运用其组件并从其强大的威力中获得帮助,你需要一份完善的资源,而非一份仅仅陈列类和函数的普通文档。   《The C++ Standard Library》(中文版《C++ 标准程序库》)不仅对每一个程序库组件提供范围广泛的说明,也对繁杂的感念提供清楚明亮的解释,并描述高效运用这些组件时需要的实际编程细节,提出一个又一个的范例程序。   这本包含最新资料的完整书籍,反映出被 ANSI/ISO C++ 语言标准规格书纳入的 C++ 标准程序库的结构。更明确地说,本书将焦点放在标准模板库(Standard Template Library)身上,检验其中的容器(containers)、迭代器(iterators)、仿函数(functors)和算法(algorithms)。你还可以找到特殊容器、字符串(strings)、数值类别、国际化议题、IOStream。每一个组件都有深刻的呈现,包括其介绍、设计、运用实例、细部解说、陷阱、意想不到的危险,以及相关类别和函数的确切标记(signature)和定义。一份见解深刻的基础概念介绍和一个程序库综合鸟瞰,会对新手带来快速的提升。   《The C++ Standard Library》范围广泛、详细、可读性高、实用, 是值得你一再查阅的 C++ 宝贵资源。本书网站 http://www.josuttis.com/libbook,其中提供书中源码下载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值