我正在玩我的编码风格.我曾经明确地为每个库调用添加前缀,std::但我转而使用这样的声明:
using std::count;
using std::vector;
Run Code Online (Sandbox Code Playgroud)
我在过去几天注意到的一件事是,有时如果我忘记了使用声明 - 这using std::vector;是一个很好的例子 - 我会得到大量的编译器错误.但是,如果我忽略了命名空间delcare,那么像using std::count;我的代码编译算法就好了.
这是否与类和自由函数的区别有关?在所有参考部位,两者count(first, last, value)并vector带有前缀std::,所以我希望他们有同样的表现.
或者它与全局命名空间中的其他函数有关吗?我注意到std::max似乎也需要一个名称空间声明,也许它在默认包含的Apple/glibc/LLVM文件中定义,因此如果我使用它没有名称空间声明会有冲突吗?
我正在使用Apple LLVM 7.0.2.在El Capitan.
编辑:向我们展示代码
#include <algorithm>
#include <vector>
using std::count;
using std::vector;
int main() {
vector<int> v = { 1, 2, 3, 4 };
return count(begin(v), end(v), 3);
}
Run Code Online (Sandbox Code Playgroud)