标准 ISO C++ 具有丰富的算法库,包括大量的语法糖,如std::max_element
, std::fill
,std::count
等。
我很难理解为什么 ISO 认为适合标准化许多此类琐碎的算法,而不是在整个容器上运行的算法的重载。
我真的不明白为什么当我们没有完整的容器版本(当然是迄今为止最常见的情况)或者类似地留下向量擦除-删除成语的暴行时,他们为什么要添加这些基本的东西:
v.erase(std::remove(v.begin(), v.end(), elem), v.end());
似乎我用 C++ 编写的每个项目,最终都会包含我自己的自定义头文件,其中包含类似这样的基本语法糖。
当然,任何微不足道的整个容器重载都可以包含在自定义标头中。许多标准化的简单算法也是如此。
我试图理解的是为什么标准中的事物有充分的理由,比如std::max_element
和std::fill
范围,而不是在整个容器上运行的版本,或者其他减少编写 C++ 代码冗长的语法糖。