存档

‘STL编程’ 分类的存档

STL auto_ptr智能指针简单分析

2011年10月8日 没有评论

闲着没事,整理一下对auto_ptr的理解。去年年底的时候准备认认真真的看看STL源代码,可是时间不是很充足,自己也不是很坚定,于是就乱七八糟的看了看。现在虽然琐事繁多,但时间还是有的,所以再整理下。
auto_ptr是STL里面的智能指针(Smart Pointer),一个很好的优点就是指针所有权自动转移和指针自动删除技术。对于异常和经常忘记delete的情况来说很实用。下面就是从SGI官方网站下载的STL auto_ptr实现源码(我在代码里面加上了我的注释,不正确的地方欢迎指正):

1
[......]

继续阅读

分类: STL编程 标签: , ,

Copy On Write(写时复制)

2011年9月29日 7 条评论

Copy On Write(写时复制)是在编程中比较常见的一个技术,面试中也会偶尔出现(好像Java中就经常有字符串写时复制的笔试题),今天在看《More Effective C++》的引用计数时就讲到了Copy On Write——写时复制。下面简单介绍下Copy On Write(写时复制),我们假设STL中的string支持写时复制(只是假设,具体未经考证,这里以Mircosoft Visual Studio 6.0为例,如果有兴趣,可以自己翻阅源码)
Copy On Write(写时复制[......]

继续阅读

bitset和string数组

2010年10月26日 没有评论

[CSDN答题总结:水题]问:
string str = "abc";
str[0]就是a
bitset<16> bit;
bit[1]就是0
现在想定义个string和bitset的数组
怎么实现定义一个string[3]就相当于定义了3个string对象 string1 string2 string3
怎么实现定义一个bitset[3]就相当于定义了3个bitset对象 bitset1 bit2 bit3
我的回答:
#include <io[......]

继续阅读

分类: STL编程 标签: , , , ,

type/value mismatch at argument 1

2010年10月24日 2 条评论

[CSDN答题总结]最近又开始出没于CSDN,看到网友问到STL的提问,而正好自己也在看STL,所以就回答有关STL的问题:
问:关于C++ STL运用的问题。求高手解答下
是关于一个STL运用的问题,有一个模板类,为
template <class T>
class Word
{
private:
vector <T> vec;
//…..
};
class Code
{
private:
vector <Word> code[......]

继续阅读

分类: STL编程 标签: , , ,

cannot appear in a constant-expression

2010年10月22日 6 条评论

又是一个错误提示。今天在用GCC编译代码时出现了这个错误,全部提示如下:
$ g++ -o a.out readstr3.cpp -Wall
readstr3.cpp: In function 'int main()':
readstr3.cpp:54:29: error: 'start' cannot appear in a constant-expression
readstr3.cpp:54:36: error: 'next' cann[......]

继续阅读

分类: STL编程 标签: , , ,

STL lexicographical_compare

2010年10月21日 没有评论

先看SGI STL的解释:
Lexicographical_compare returns true if the range of elements [first1, last1) is lexicographically less than the range of elements [first2, last2), and false otherwise. Lexicographical comparison means "dictionary" (element-by[......]

继续阅读

C++/STL自定义函数对象

2010年10月21日 没有评论

主要是定义一个类,然后重载这个类的函数调用操作符,也就是括号符号。为了不失一般性,可以引入template机制,这样就能够更加通用了。下面是自定义的一个比较函数对象,主要功能类似STL中的less<Type>函数对象。
//Coded by 代码疯子
//http://www.programlife.net/
#include <iostream>
#include <algorithm>
#include <iterator>
#inc[......]

继续阅读

分类: STL编程 标签: , , , ,

买了《泛型编程与STL》

2010年10月13日 4 条评论

        此书已经绝版,侯捷说中文版在大陆只印刷了6000册,显然是洛阳纸贵。所以我去淘宝买了一本盗版,说不好听一点是纯粹的复印本,连封面都是自制的⊙﹏⊙
        没办法,复印本连邮费也花了30RMB了。把这本《GP&STL》看完了,我就去看侯捷的《STL源码剖析》。本来是想连同这本书一起买的,想到比起复印本,我还是倾向于盗版书,毕竟盗[......]

继续阅读

分类: STL编程 标签: , , ,

no matching function for call to transform

2010年10月11日 8 条评论

文章得从《C++标准程序库》中的一个源代码说起。今天看到了第11章String,于是敲了书上的源代码,在Ubuntu下一编译,靠,竟然报错了。
STL报错那是什么概念……信息异常混乱啊!于是就直接去Google搜索错误提示关键字了。恩,找到了相关问题,同样也是《C++标准程序库》上的这份代码造成的。
现来看一下代码吧:
#include <iostream>
#include <string>
#include <algorithm&[......]

继续阅读

分类: STL编程 标签: , , ,

STL四则运算仿函数

2010年10月8日 没有评论

STL中四则运算的仿函数算子分别是加plus<type>(), 减minus<type>(), 乘plus<type>(), 除plus<type>(),还有取模运算modulus<type>(),取反negate<type>().这些都定义在functional头文件中。下面通过transform的配合来介绍一下各个函数的用法:
先创建两个vector,都存放1到9,然后通过transform将两个集合中的元素进行相应的[......]

继续阅读

分类: STL编程 标签: , , ,