
作者
闫小林
白天搬砖,晚上做梦。我有故事,你有酒么?
C++标准命名空间
C++ 标准库中定义了一个名为 std 的命名空间,其中包含了很多有用的函数、类、对象和类型定义,比如容器、迭代器。
为方便读者理解,小林写个具体的 demo:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5}; // 定义一个整型向量
std::vector<int>::iterator it; // 定义一个迭代器
for (it = vec.begin(); it != vec.end(); it++) { // 输出向量中的所有元素
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}在上述小林写的 demo 中,我用 vector 容器存储了一组整数,并使用 iterator 迭代器遍历了容器的所有元素,最后输出。
在整个代码中,我用了 std 命名空间中的 vector 类和 iterator 类。
上述 demo 编译运行结果:
1 2 3 4 5C++标准命名空间注意事项
读者在使用标准命名空间需要注意以下几点:
1、在使用 std 命名空间中的内容之前,一定要在程序中包含相关头文件,否则编译器将无法识别所使用的对象、类型定义等。
2、C++ 标准库中的某些函数或类型与其他库或自定义代码中的名称相同,容易发生命名冲突。
因此,在引入 C++ 标准库时,要特别注意不要与已有名称冲突。
3、在不同的编译单元中,在相应的源文件中包含相应的头文件,并使用 std:: 前缀以避免命名空间重复。
4、不要在使用 using namespace std; 或者 using std::xxx; 等命名空间的方式,会引入与项目自定义变量、函数冲突的情况。
5、不要使用std对象/类型名称的当中的下划线后缀,因为这是已经被保留的,很可能会导致未定义行为。
6、避免在头文件内使用std:: 框架内的名称,如不可避免,尽可能使用作用域限制符,避免污染其他文件的命名空间。