首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

看c++标准程序库的疑问解决办法

2012-03-12 
看c++标准程序库的疑问C/C++ code仿函数的疑问:c++标准程序库page.127-128页提到:假设你需要对群集中的每

看c++标准程序库的疑问

C/C++ code
仿函数的疑问:c++标准程序库page.127-128页提到:     假设你需要对群集中的每一个元素加上一个固定值,如果你在编译期知道了这个固定数字你可以使用一般函数void add10(int & elem){elem+=10;}int main(){vector<int>coll;.......for_each(coll.begin(),coll.end(),add10);如果你需要数个不同的固定值,而它们在编译期都已知道,你可以使用:template<int theVale>void add(int& elem){elem+=theVale;}int main(){vector<int> coll;.............for_each(coll.begin(),coll.end(),add<10>); //通过末班来将固定值传进去。} 注意,作者此时加了几句话(是我不懂的地方): 如果你必须在执行期间才处理这些数值,那可就麻烦了。你必须在函数被调用之前先把这个数值传给该函数。这通常会导致产生一些全局变量。  为什么会导致产生一些全局变量啊?????模板的编译期间,和执行期间有什么区别,


[解决办法]
语言书面化。。。。

如果你必须在执行期间才处理这些数值, 你必须在函数被调用之前先把这个数值传给该函数, 那么这个函数总该保存这个数值才能正常工作吧?而保存的话又不能保存在局部变量.故这通常会导致产生一些全局变量.

模板函数在编译期就确定了, 执行期时其相当于一个确定的函数

热点排行