当前位置: 首页 > news >正文

C++ 学习与 CLion 使用:(二)using namespace std 语句详解,以及 std 空间的标识符罗列

using namespace std

1)作用

在 C++ 中,using namespace std; 的作用是引入标准命名空间 std 中的所有标识符,使得在代码中可以直接使用 std 中的名称(如 coutvectorstring 等,类似 python 中的关键字),而无需显式添加 std:: 前缀。

  • 如果不使用 using namespace std;,每次调用标准库功能时都必须显式加上 std:: 前缀:

    #include <iostream>int main() {std::cout << "Hello, World!" << std::endl;  // 必须写 std::std::string s = "C++";return 0;
    }
    
  • 而使用 using namespace std; 后,可以省略 std::

    #include <iostream>
    using namespace std;  // 引入 std 命名空间int main() {cout << "Hello, World!" << endl;  // 直接使用string s = "C++";return 0;
    }
    

注意:虽然这样可以省事,但是如果自定义的标识符(如变量、函数)与 std 中的名称相同,会导致冲突。也会降低代码可读性。

注意:在头文件中绝对不要使用 using namespace std;

2)用法

  • 局部使用(推荐)

    仅在函数内部或 .cpp 文件中局部引入,避免在头文件中使用:

    #include <iostream>void printHello() {using namespace std;  // 仅在此作用域内有效cout << "Hello!" << endl;
    }
    
  • 显式引入特定名称

    只引入需要的名称,而非整个 std

    #include <iostream>
    using std::cout;  // 仅引入 cout
    using std::endl;  // 仅引入 endlint main() {cout << "Hello!" << endl;  // 可以直接使用// string s = "C++";       // 错误!未引入 std::stringreturn 0;
    }
    
  • 完全避免(最安全)

    直接使用 std:: 前缀,明确来源:

    #include <iostream>int main() {std::cout << "Hello!" << std::endl;  // 始终显式指定std::string s = "C++";return 0;
    }
    

3)std 命名空间核心内容表格

分类子分类关键成员
输入/输出 (I/O)标准流cin, cout, cerr, clog
文件流ifstream, ofstream, fstream
字符串处理字符串类string, wstring, u16string, u32string
字符串操作getline, stoi, to_string, stod
容器顺序容器vector, list, deque, array, forward_list
关联容器(有序)set, map, multiset, multimap
无序关联容器(哈希表)unordered_set, unordered_map, unordered_multiset, unordered_multimap
算法排序与搜索sort, find, binary_search, lower_bound, upper_bound
修改操作copy, reverse, unique, fill, transform
数值计算accumulate, inner_product, iota, partial_sum
迭代器通用工具begin, end, next, prev, distance, advance
实用工具时间处理chrono::seconds, chrono::milliseconds, system_clock
随机数生成mt19937, uniform_int_distribution, shuffle
智能指针unique_ptr, shared_ptr, weak_ptr, make_shared, make_unique
类型特性与转换move, forward, is_integer, enable_if, conditional
异常处理异常类exception, runtime_error, logic_error, invalid_argument
多线程线程管理thread, mutex, lock_guard, unique_lock, condition_variable
函数式编程函数对象plus, minus, less, equal_to, greater
绑定与可调用对象bind, function, mem_fn, not_fn
数学函数通用数学abs, sqrt, sin, cos, floor, ceil, pow, log
C 兼容性C 标准库封装printf, scanf, fopen, malloc, free(通过 <cstdio> 等头文件提供)

http://www.lryc.cn/news/618685.html

相关文章:

  • 【python实用小脚本-182】Python一键爬取今日新闻:5分钟生成Word+CSV——再也不用复制粘贴
  • 【web站点安全开发】任务2:HTML5核心特性与元素详解
  • 02-Ansible 基本使用
  • Python day42
  • 【运维进阶】Ansible 自动化
  • [激光原理与应用-250]:理论 - 几何光学 - 透镜成像的优缺点,以及如克服缺点
  • TensorBoard的使用 小土堆pytorch记录
  • centos 怎么部署 vscode 网页版
  • 半精度模型(16位)解析
  • TRO风暴预警GoPro携BSF律所重拳打击跨境侵权
  • QT6 如何在Linux Wayland 桌面系统抓屏和分享屏幕
  • 使用Excel制作甘特图
  • 将黑客拒之物联网网络之外的竞赛
  • 5G毫米波现状概述(截止2025 年7月)
  • ROS教育中自动驾驶机器人的技术融合与技术创新
  • 门店销售机器人的认知革命:当传统机械邂逅Deepoc具身智能
  • CVPR 2025丨机器人如何做看懂世界
  • 开疆智能Ethernet转ModbusTCP网关连接发那科机器人与三菱PLC配置案例
  • RoboNeo美图AI助手
  • 如何区分类的关系是关联和聚合?
  • Java工厂模式
  • 【图像算法 - 13】基于 YOLO12 与 OpenCV 的实时目标点击跟踪系统(系统介绍 + 源码详细)
  • mysql 简单操作手册
  • springboot+JPA
  • Socket 套接字常用方法
  • 知名车企门户漏洞或致攻击者远程解锁汽车并窃取数据
  • 外卖投诉:差评转复购的3步攻略
  • 腾讯云terraform学习教程
  • 终端互动媒体业务VS终端小艺业务
  • JAVA高级第十章 XML