云计算百科
云计算领域专业知识百科平台

Visual Studio 初次安装无法使用 #include <bits/stdc++.h>?一篇文章教你彻底解决

Visual Studio 初次安装无法使用 #include <bits/stdc++.h>?一篇文章教你彻底解决

一、问题描述

很多刚开始学习 C++、刷 LeetCode 或者准备算法竞赛的同学,可能都会遇到这样一个问题。

在很多算法题代码中,我们经常看到:

#include <bits/stdc++.h>
using namespace std;

int main()
{
vector<int> nums = {1, 2, 3};

for (int x : nums)
cout << x << \” \”;

return 0;
}

使用 GCC、MinGW 或者一些在线 OJ 平台时,这段代码通常可以直接编译。

但是,当我们第一次安装 Visual Studio 并创建 C++ 项目后,却可能发现:

#include <bits/stdc++.h>

直接报错:

无法打开包括文件: \”bits/stdc++.h\”: No such file or directory

这是为什么?

其实不是你的 Visual Studio 安装坏了,也不是 C++ 配置出了问题。

真正的原因是:bits/stdc++.h 本身就不是 C++ 标准头文件。


二、bits/stdc++.h 到底是什么?

很多初学者会误以为:

bits/stdc++.h 是 C++ 官方提供的“万能头文件”。

实际上并不是。

bits/stdc++.h 属于 GCC 的 libstdc++ 实现,而不是 ISO C++ 标准规定的头文件。

GCC 官方的 libstdc++ 源码中确实存在这个文件,它的作用主要就是作为一个预编译头文件,把大量常用的 C/C++ 标准库头文件集中包含起来。

例如其中会包含:

#include <algorithm>
#include <bitset>
#include <functional>
#include <iterator>
#include <limits>
#include <memory>
#include <new>
#include <numeric>
#include <typeinfo>
#include <utility>

以及大量其他标准库头文件。

所以:

#include <bits/stdc++.h>

本质上就是:

让 GCC 一次性包含大量常用的标准库头文件。


三、为什么 GCC 能用,Visual Studio 却不能?

这里就涉及 C++ 编译器实现的问题了。

常见的 C++ 编译器有:

  • GCC

  • Clang

  • MSVC

其中:

GCC 使用的是 GNU 的 libstdc++ 标准库实现。

而:

Visual Studio 使用的是 Microsoft 的 MSVC + STL 实现。

所以两者提供的非标准头文件并不完全一样。

GCC 提供:

#include <bits/stdc++.h>

而传统的 MSVC STL 中并没有这个文件。

因此,如果你安装 Visual Studio 后直接写:

#include <bits/stdc++.h>

找不到文件是正常现象。

这不是 Visual Studio 不能写 C++,而是:

你正在使用 GCC 特有的头文件,而当前项目使用的是 MSVC。


四、最推荐的方法:直接使用标准头文件

如果你是在开发正规的 C++ 项目,我其实并不推荐强行给 Visual Studio 加上:

bits/stdc++.h

例如:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <unordered_map>

这样才是标准 C++ 的写法。

例如:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
vector<int> nums = {3, 1, 2};

sort(nums.begin(), nums.end());

for (int x : nums)
cout << x << \” \”;

return 0;
}

这种写法不依赖 GCC 的特殊文件。

以后换到:

  • Visual Studio

  • GCC

  • Clang

  • Linux

  • macOS

都更加方便。


五、但是我就是想在 Visual Studio 里使用万能头文件怎么办?

如果你主要是:

  • 刷 LeetCode

  • 刷牛客

  • <

赞(0)
未经允许不得转载:网硕互联帮助中心 » Visual Studio 初次安装无法使用 #include <bits/stdc++.h>?一篇文章教你彻底解决
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!