【发布时间】:2014-02-24 06:18:44
【问题描述】:
昨天我有一个有趣的问题。我在 Linux 上有一些 C++ 代码,我可能会将其提供给 Android 团队。他们问我是否可以省略 STL 的使用。这就引出了一个普遍的问题,即如何检测 C++ 代码中 STL 的使用?
我最好的解决方案(很可能不是最好的)是搜索以下头文件,删除它们并编译。
#include <vector>
#include <deque>
#include <list>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <iterator>
#include <iterator>
#include <algorithm>
#include <numeric>
#include <numeric>
#include <functional>
#include <utility>
#include <memory>
更好的解决方案?
【问题讨论】:
-
您可以尝试在您的项目中搜索
std。要么你会找到using namespace std,在这种情况下删除这些语句会导致任何 stl 类型的声明出错,或者你会发现显式的std::class变量声明。 -
不清楚您所说的
STL是什么意思。这是一个不完整的标题列表。您是否只想使用 c 样式的标题,例如cstdio而不是iostream,即使它不在列表中?为什么之后需要删除这些标头?为什么不禁止程序员使用它并检查代码呢?当代码在没有标头的情况下无法编译时,仅删除标头有何帮助? -
他们是否解释了 STL 的含义?它是来自 STL 的 C++ 标准库的子集吗?它是实际的 STL 吗?还是C++标准库?
-
我没有看到上述方法的问题。如果不包含 STL 标头,则不能使用 STL。您可能还想包含
<unordered_set>和<unordered_map>。