C++ STL算法函数的编写

C++ STL算法函数的编写,c++,algorithm,stl,iterator,C++,Algorithm,Stl,Iterator,我有一个std::set类型为point struct point { int x; int y; int z; }; 假设我想对集合中的每个变量执行三种不同的操作,即 从x变量中找出最小的数 从y变量中获取缺少的元素 使用集合差分 获取所有z变量的乘积 在这一点上,我应该按顺序使用三个预定义的alogrithm函数,还是应该编写自己的alogrithm,通过在集合上迭代一次来执行所有三个操作?开始按顺序使用三个函数。如果您遇到性能问题,请尝试编写自己的算法 过早优化是有害的

我有一个
std::set
类型为
point

struct point
{
  int x;
  int y;
  int z;
};
假设我想对集合中的每个变量执行三种不同的操作,即

  • 从x变量中找出最小的数
  • 从y变量中获取缺少的元素 使用集合差分
  • 获取所有z变量的乘积

在这一点上,我应该按顺序使用三个预定义的alogrithm函数,还是应该编写自己的alogrithm,通过在集合上迭代一次来执行所有三个操作?

开始按顺序使用三个函数。如果您遇到性能问题,请尝试编写自己的算法

过早优化是有害的


即使速度提高了10倍,如果这段代码只占用应用程序时间的5%,那么执行时间也会减少到95%。所以,除非您知道这是应用程序中的一个真正瓶颈,否则不要浪费时间来优化它。知道这一点的唯一方法是通过分析

还请记住Knuth在您转述的引语后所写的内容:“但我们不应放弃在关键3%方面的机会。一个好的程序员不会因为这样的推理而沾沾自喜,他会明智地仔细查看关键代码;但只有在识别出关键代码之后。”