假设我有一个在foo.h
中定义的函数:
#pragma once
#include <vector>
#include <string>
void foo(std::vector<std:string> input);
,在实现文件foo.cpp
中,我需要使用另一个库(例如std::map
)来实现函数foo。
void foo(std::vector<std:string> input){
...
std::map ...
...
}
请注意,声明中不需要std:map
,它只是特定于实现的。
我应该将#include <map>
放在foo.h
或foo.cpp
文件中吗?
我知道两种情况下都可以编译代码,我想知道什么是好的做法?
答案 0 :(得分:4)
将包含内容放入需要的源文件中。
将其放入标头中会不必要地导致标头的所有用户也包括<map>
,无论他们是否需要它。
对于琐碎的项目而言,这是无关紧要的,但是对于大型项目而言,这很重要,因为毫无意义的事情包括增加了编译时间并增加了名称冲突的风险。
答案 1 :(得分:3)
保持沉默,仅提供真正需要的东西。
否则,在一个真正的大型项目中,您将得到一堆头文件,每个人都不敢触摸,因为毕竟可能需要它。
此外,它将使项目中的其他所有人也包括地图库,这是不必要的开销(增加了编译时间和/或名称重叠的危险增加了。)