老用Java写程序,用C++的STL就老想起java.util.*。还是需要重新读一读C++的template和STL章节。
1. Template parameters
原来Template可以带parameter的。
例如:template<class T, T def_val> class Count{/*...*/};
这里的参数还可以是常量或常量表达式、对象或函数地址,或者指向对象成员的指针。
2. 千万注意const
java里面没有const,而C++里面的const限制非常严格。举一个容易出错的例子:
void fun(const set<string> s)
{
set<string>::iterator itr;
for(itr = s.begin();itr!=s.end();s++)
{...}
...
}
熟悉C++的人一看就知道错在什么地方了:这里s.begin返回的是一个set<string>::const_iterator,而不是我们定义的set<string>::iterator。