标签: cpp
与该标签相关的所有文章 "cpp".
-
C++ 竞赛:ACM 模式 I/O 的组合拳
ACM 模式写 C++ 的 I/O 模板只有两行:iosbase::syncwith_stdio(false); cin.tie(nullptr);——关掉 C stdio 同步和 cin 对 cout 的 tie,把默认慢的 cin/cout 提到接近 scanf/printf 的速度;然后用 cin >> 读 token、getline 读整行、stringstream 切分变长字段 这三招覆盖 95% 的输入格式;剩下 5% 的极限数据量(> 10^7 整数)用 fread + 手写 parseInt 解决。最容易踩的坑是 cin >> 和 getline 混用时换行符残留、scanf 读 double 用错 %f、输出循环里写 endl 拖慢几十倍。
-
C++ STL:迭代器如何解耦算法与容器
STL 的灵魂是 Alexander Stepanov 的泛型编程思想:算法只依赖迭代器,容器只提供 begin/end——N 个算法 × M 个容器从需要 N×M 份代码变成 N+M 份。vector 扩容用 moveifnoexcept 保证强异常安全,std::sort 用 introsort 保证最坏 O(n log n),unorderedmap 因 ABI 包袱锁死为链地址法(比 absl::flathash_map 慢 2-3 倍)——这些实现选择背后都有性能与兼容性的深层权衡。
-
C++ 网络编程:epoll、Reactor 与 one loop per thread
C++ 标准库到 C++20 都没有网络库(Networking TS 因 executor 重构被无限期搁置)。Linux 生产方案是 epoll ET + Reactor 模式 + one loop per thread:主 Reactor accept 连接分发到工作线程池,每个工作线程独占 EventLoop 处理自己的连接,通过 eventfd 跨线程唤醒、timerfd 统一定时器、sharedptr + weakptr 管理 TcpConnection 生命周期。muduo 是国内 C++ 服务器开发事实上的学习范本。
-
C++ 工程化(二):命名规范没有统一标准但有底线规则
C++ 没有统一的命名规范,主流风格(STL/Google/LLVM/Qt/Unreal)各自为政——这是 C++ 40 年多时代叠加的历史遗留问题。但"没有统一标准"不等于"怎么写都行":C++ 标准对保留标识符有硬性规定,违反就是 UB;宏必须全大写也是跨风格的唯一共识。实操铁律是:进入已有 codebase 严格 follow,新建项目选一个成熟 style guide 一以贯之,并用 clang-format 强制执行——风格选择的质量远不如风格一致性的质量重要。