相关C/C++的编程经验、总结、体会...
这几天研究Boost,总结一下。
编译:
编译:
bjam --toolset=msvc-9.0 --build-type=complete --with-filesystem stage
提取:bcp boost/lexical_cast.hpp boost/filesystem.hpp boost/format.hpp boost/timer.hpp boost/pool/pool.hpp foo
下面是关于C++0x中的TR1和TR2的相关信息,决定对Boost的学习就基于tr1和tr2的内容。为此,将编译器升级到VC2008SP1,纪念一下!
有时候比较管用,具体实现看代码吧。子类实现:
#include "Parent.h"
class CSub
{
public:
CSub(void);
~CSub(void);
public:
void Sub();
public:
CParent * m_pParent;
};
void CSub::Sub()
{
if (m_pParent != NULL) m_pParent->Parent();
}
class CSub
{
public:
CSub(void);
~CSub(void);
public:
void Sub();
public:
CParent * m_pParent;
};
void CSub::Sub()
{
if (m_pParent != NULL) m_pParent->Parent();
}
std::vector排序问题,可将struct作为成员放进class,再利用重载实现排序,但这样的实现比较繁琐。其实,利用STL本身的排序算法,也是可以实现排序的。以下是实现代码,在VC2005下测试通过。注:2007-10-10修正两个bug。
有时不想用SEH,主要是考虑到效率上的问题。这时,有两种可行的替代,各有利弊。其中,func2的while(false)还会导致VS2005在Level 4 (/W4)下的一个警告:warning C4127: conditional expression is constant。
精确到毫秒级,使用Release版本,VC2003,优化模式。
测试结果说明:std::vector的效率还不错,在循环遍历时,如果千万次的级别,则要注意不要在循环里反复调用v.end(),而应该在循环外面还将v.end()保存。数据量少(100万以下)则无此必要。下面是测试代码,测试结果自己看吧,配置不同,则结果也不一样。
测试结果说明:std::vector的效率还不错,在循环遍历时,如果千万次的级别,则要注意不要在循环里反复调用v.end(),而应该在循环外面还将v.end()保存。数据量少(100万以下)则无此必要。下面是测试代码,测试结果自己看吧,配置不同,则结果也不一样。




2008/10/01

