李sir_Blog

博客园 首页 联系 订阅 管理
  705 随笔 :: 58 文章 :: 134 评论 :: 193万 阅读

随笔分类 -  STL/Boost學習

上一页 1 2 3 4 下一页

摘要:Boost::tuple就为我们提供了一种类似于匿名struct的方法为我们解决函数的多个返回值的问题。既增强了代码的可读性有不增加代码量。其实在STL中已经有这样的特例,std::pair其实就是boost::tuple的2个参数的特例 一 Boost::tuple 很多的时候我们经常需要为我们的函数返回多个值,一般的做法是通过传入非常量的指针或引用,但是这样的话可能可读性就要差一些,使用者可能需要确切的文档才能确定到底哪个是返回值,为了更好的可读性,我们可以使用class或struct来封装我们要返回的多个值,然后返回封装struct或class,但是使用这种方法的弊端就是增加的程序的代 阅读全文
posted @ 2011-01-13 16:47 李sir 阅读(1088) 评论(0) 推荐(0) 编辑

摘要:在boost中有boost::Any为我们提供了类似java或.net中的object类型,boost::Any能够代表任意类型,实现任意类型的类型安全存储以及安全的取回,常用在将不同类型的对象存储在标准容器中一 Boost::Any 很多时候我们想有一种可以代表任何类型的类型,比如像纯面向对象语言java或.net中的Object类型,但是对于C++本身并没有这样一个基类,所以我们如果要解决这类问题,首先我们考虑的是使用基类的指针,这能够解决以部分问题,但是更多的我们可以求助于void*,使用void*的缺点就是丢失了类型信息和缺乏类型安全。 幸好的是在boost中有boost::Any为我 阅读全文
posted @ 2011-01-13 16:29 李sir 阅读(893) 评论(0) 推荐(0) 编辑

摘要:Boost带领你远远地超越了C++标准库,它使得C++编程更优雅、更有活力、更高产。唯一的关于boost的book:Beyond the C++ Standard Library: An Introduction to Boost... 一 BOOSTBoost带领你远远地超越了C++标准库,它使得C++编程更优雅、更有活力、更高产。(引自:Beyond the C++ Standard Library: An Introduction to Boost)(慢慢体会哦!)二 参考主要:boost的在线document:http://boost.org/libs/libraries.htm唯一的 阅读全文
posted @ 2011-01-13 16:22 李sir 阅读(824) 评论(0) 推荐(0) 编辑

摘要:输入输出的头文件 iostream string流的头文件 sstream 文件流的头文件 fstream stringstream的用法1.利用输入输出做数据转换2.支持char*的输入和输出3.来存储可变数据的列表 阅读全文
posted @ 2011-01-04 15:27 李sir 阅读(7164) 评论(0) 推荐(0) 编辑

摘要:一般的对于需要删除字符串开始和结尾的空格的代码,经常为Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1#includeiostream2#includestring3usingnamespacestd;45voidmain()6{7stringstrTest="Hello,world.";89strTest.erase(0,strTest.find_first_not_of(''));10cout"["strTest"]" 阅读全文
posted @ 2011-01-04 15:13 李sir 阅读(744) 评论(0) 推荐(0) 编辑

摘要:Boost 中文站 Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,在C++社区中影响甚大,其成员已近2000人。 Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。本站主要介绍Boost相关的中文技术文档。 Boost 入门 C++ Boost 学习资源列表 boost库简介 Windows和Solaris上Boost安装和编译 走进Boost(Boost使用入门) Boost 编程技术 Boost中的智能指针 C++ Boost Thread线程编程指 阅读全文
posted @ 2011-01-04 11:27 李sir 阅读(2841) 评论(0) 推荐(0) 编辑

摘要:1.在http://www.boost.org/网站上下载文件包2.由于boost是采用其自己的bjam工具通过命令行进行编译的,前提就是要保证自己的“Visual Studio 2005 命令提示”工具可用。3.解压下载的文件包X:\XXX\boost_1_44_0\目录下4.编译bjam。打开vs2005的工具菜单进入命令提示窗口,cd到X:\XXX\boost_1_44_0\tools\jam\src下执行build.bat,会在X:\XXX\boost_1_44_0\tools\jam\src\bin.ntx86\下生成bjam.exe,將bjam.exe复制到X:\XXX\boost 阅读全文
posted @ 2010-12-31 17:04 李sir 阅读(489) 评论(0) 推荐(0) 编辑

摘要:此范例demo如何使用STL的queue container,要将数据加进queue时,只要用q.push(item)即可,但要取出数据时,并不是用q.pop(),而是用q.front()取出最前面的数据,q.pop()则是将最前面的数据取出queue,其回传值为void。1/**//*2(C)OOMusou2006http://oomusou.cnblogs.com34Filename:Queu... 阅读全文
posted @ 2010-10-27 17:38 李sir 阅读(2891) 评论(0) 推荐(0) 编辑

摘要:sort()和stable_sort()都對container做sort的動作,但對於相等的值,sort()和stable_sort()處理的方式不一樣,stable_sort()會保證不更改原先的順序,但sort()則不保證,有可能更改順序,但也有可能不改,這樣講還是很籠統,若用SQL來解釋,就一目暸然了。在SQL中,我們常有以下寫法1SELECT*2FROM[customers]3ORDERB... 阅读全文
posted @ 2010-10-27 17:26 李sir 阅读(4017) 评论(0) 推荐(0) 编辑

摘要:此範例demo如何使用unique() algorithm。1/**//*2(C)OOMusou2006http://oomusou.cnblogs.com34Filename:GenericAlgo_unique.cpp5Compiler:VisualC++8.0/ISOC++6Description:Demohowtouseunique()algorithm7Release:12/11/200... 阅读全文
posted @ 2010-10-27 17:21 李sir 阅读(1341) 评论(0) 推荐(0) 编辑

摘要:copy() algorithm是很好用的algorithm,但偏偏就是沒有copy_if(),但透過remove_copy_if()則可達到相同的要求。remove_copy_if()的思考方式和copy_if()相反,若UnaryPredicate為true,則不copy,若為false,則copy。此範例demo若為remove_copy_if() algorithm,先輸出奇數,再輸出偶數... 阅读全文
posted @ 2010-10-27 17:08 李sir 阅读(3157) 评论(0) 推荐(0) 编辑

摘要:大家都體會過sequential container搭配copy() algorithm,只要一行程式就可以將所有值輸出到cout,map這種associative container就無法用這一招,是否有其它方式解決呢?map這種associative container因為是雙值,若用copy()到cout,會讓cout傻眼,不知道要抓拿一個值,當然用for loop一定可以,但基於使用STL... 阅读全文
posted @ 2010-10-27 17:05 李sir 阅读(515) 评论(0) 推荐(0) 编辑

摘要:map和multimap都自帶find(),不需Generic Algorithm就可搜尋,事實上,當container和algorithm都提供方法時,應先考慮使用container自帶的方法,因為algorithm考慮到泛型,還需要經過iterator,但container自帶的方法卻是量身訂做的,所以執行速度較快。要列出multimap中某個key的所有value,有三種方式,此範例demo... 阅读全文
posted @ 2010-10-26 20:27 李sir 阅读(2224) 评论(0) 推荐(1) 编辑

摘要:若要將vector中反過來列印,該怎麼做呢?STL提供了reverse_iterator。1/**//*2(C)OOMusou2006http://oomusou.cnblogs.com34Filename:ReverseIterator.cpp5Compiler:VisualC++8.0/ISOC++6Description:Demohowtousereverse_iterator7Releas... 阅读全文
posted @ 2010-10-26 20:22 李sir 阅读(8738) 评论(1) 推荐(0) 编辑

摘要:很多STL algorithm都是_if結尾的,讓我們可以帶function進去,若配合function object,可讓function更有彈性!!以下的範例想利用count_if() algorithm得知vector大於n的有幾個?1/**//*2(C)OOMusou2007http://oomusou.cnblogs.com34Filename:FunctionObjectSimple.... 阅读全文
posted @ 2010-10-26 20:19 李sir 阅读(1098) 评论(0) 推荐(0) 编辑

摘要:Abstract若想將container中的iterator,從一個值取代成另外一個值,但container並沒有提供replace()這個member function,而是提供了replace()這個Generic Algorithm。Introduction以下範例我們將vector中,所有的1取代成4。1/**//*2(C)OOMusou2006http://oomusou.cnblogs... 阅读全文
posted @ 2010-10-26 20:18 李sir 阅读(342) 评论(0) 推荐(0) 编辑

摘要:Abstract之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL)曾經討論過for_each(),不過當時功力尚淺,只談到了皮毛而已,這次看了effective STL的item 41、43後,對for_each()又有了更深入的了解,因此做了本篇心得報告。Motivation看到了eXile的C++中实现 foreach使用了巨集對foreach做改善... 阅读全文
posted @ 2010-10-26 20:15 李sir 阅读(1107) 评论(0) 推荐(1) 编辑

摘要:Abstractfor_each()是STL中少數可以回傳值的algorithm,此範例在展示for_each()此特殊功能與function object可以留住state的特性。Introductionfunction object與global function的差別除了function object可以傳入參數外,還可以不使用static就可以留住state。一個簡單的需求,想要每印n個數... 阅读全文
posted @ 2010-10-26 20:11 李sir 阅读(317) 评论(0) 推荐(0) 编辑

摘要:轉貼自 梦在天涯的STL算法学习STL算法学习,小结如下:前提: 下载stl源码: http://www.sgi.com/tech/stl/download.html打开网页: http://www.sgi.com/tech/stl/stl_index.html一 函数对象: 因为很多的算法中多使用了函数对象 二元函数对象,V1和V2为输入,V3为结果plus<T>: transfor... 阅读全文
posted @ 2010-10-26 20:09 李sir 阅读(474) 评论(0) 推荐(0) 编辑

摘要:Abstract STL並沒有提供這樣的algorithm,透過簡單的方法,就可以達成這個需求。Sample Code1/**//*2(C)OOMusou2007http://oomusou.cnblogs.com34Filename:GenericAlgo_eliminate_duplicate.cpp5Compiler:VisualC++8.0/BCB6.0/gcc3.4.2/ISOC++6D... 阅读全文
posted @ 2010-10-26 20:07 李sir 阅读(364) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 下一页
点击右上角即可分享
微信分享提示