c++ - 在 .h 和 .cpp 中使用 <vector> (或任何 STL 容器)的正确方法

标签 c++ vector

比方说,我声明function_x通过

vector<int> function_x(int i1, int i2);

在function.h中,并通过

定义它
vector<int> function_x(int i1, int i2) {
    vector<int> vec;
    vec.push_back(i1);
    vec.push_back(i2);
    return vec;
}

在函数.cpp中。

要使用 vector ,我需要写#include <vector>在函数.h中。

如果是这样,我就不需要写 #include <vector>在 function.cpp 中,因为我输入 #include "function.h"无论如何,它包含 #include <vector> .

但是我感觉有点奇怪因为我在function.cpp中使用了 vector 而不包含<vector> (直接)。

这是正常的使用方式吗<vector> (或任何 STL 容器)? 或者,我应该写#include <vector>在 function.cpp 中为了明确起见,即使我确定它是不必要的? ( <vector> 应该包含防护)

最佳答案

你应该#include <vector>每个需要它的文件、 header 中。 header 和源之间并不总是存在一对一的关系,并且您永远不知道程序的结构会如何随着时间的推移而变化。保持关系简单可以简化维护。

例如,尝试跟踪 #include 可能会变得相当复杂。文件已包含于其中一个 header 中。它在哪里结束?您只接受包含还是接受包含的包含

如果您必须搜索包含来尝试解析所有符号的来源,那么判断当前文件所依赖的内容也会困难得多。

关于c++ - 在 .h 和 .cpp 中使用 <vector> (或任何 STL 容器)的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40337736/

相关文章:

c++ - 有没有更好的方法来终止 Windows 上的 chrome.exe

c++ - 将 vector 指针 move 到 C++ 中的 vector 派生类?

c++ - 为什么 C++ vector 会导致 oom-killer?

c - 如何在 gcc 中使用矢量化选项

C++ 索引到索引映射

c++ - 释放容器成员的内存

c++ - 引用和指针的 const_cast

java - 使用 if(0 == foo()) 而不是 (foo() == 0) 有什么好处?

c++ - 终止应用程序并调用局部对象的析构函数

c++ - 根据类中的变量对类 vector 进行排序