阅读这篇文章时,发现一个很有趣的点,原来使用copy和back_inserter时不需要使用std::。
查了一圈资料,没找到合理的解释,问了一下GPT:
algorithm中的函数不需要显式地使用std命名空间是因为这些函数通常在标准库头文件中声明。这意味着它们已经位于std命名空间中,因此你可以直接调用它们而无需前缀"std::"。这种设计有助于简化代码并提高可读性,但请注意,这仅适用于标准库中的函数。
在定义copy函数的stl_algobase.h中,发现了_GLIBCXX_STD_C::这个宏,其定义在c++config.h中,
# define _GLIBCXX_STD_C std
可以看到,此处将其定义为std。