C++ Can';t通过向量作为参数c++;

C++ Can';t通过向量作为参数c++;,c++,function,vector,C++,Function,Vector,我一直在用C++尝试这一点: #include "stdafx.h" #include <iostream> #include <string> #include <vector> int add(vector<int>& nums) { } #包括“stdafx.h” #包括 #包括 #包括 整数相加(向量和nums){ } 但智能感知告诉我“标识符向量未定义”。我试图创建一个函数,该函数将向量作为参数传入。我可能在做一些非常愚蠢

我一直在用C++尝试这一点:

#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>

int add(vector<int>& nums) {

}
#包括“stdafx.h”
#包括
#包括
#包括
整数相加(向量和nums){
}

但智能感知告诉我“标识符向量未定义”。我试图创建一个函数,该函数将向量作为参数传入。我可能在做一些非常愚蠢的事情。这是在我的主程序中的一个单独的C++文件中。

你必须限定命名空间:<代码> STD::向量< /> > < /P>
请尽可能避免使用
名称空间
,因为这很容易导致命名冲突(如果在标题中使用,会污染整个全局名称空间)。

尝试使用std::vector添加
在添加之前,尽量不要太依赖intellisense。有时会挂起,有时不会实时更新。真正的测试是编译。编译它并查看编译器错误。另外,请尝试阅读有关
名称空间的更多信息。下一次它也会有所帮助,而不仅仅是在某处添加一个
std::
。谢谢。另外,在头文件中编写原型时,再次包含原型似乎很奇怪。这是唯一的办法吗?通过执行#include然后执行prototype?假设您指的是函数声明:是的,您必须在使用标识符
std::vector
之前包含
,因为。您不必再次将其包含在.cpp文件中。但是,如果您不在相应的.hpp/.cpp文件中,我建议始终包含头,因为包含的头是一个实现细节,可以更改(并且您不希望这些更改破坏您的代码)。那么您认为这是一个编写良好的代码吗?我有一个add函数的头文件(这样我就可以了解这些东西),其中包含一行原型,没有body。在它中,我包含了add.h,然后在add.cpp文件中包含add函数体。然后在我的主cpp文件中,我又添加了add.h。我来自C#背景,所以看起来我包含的内容太多了,但那可能就是我自己。@TiernanWatson标题应该是完全独立的,并且包含运行所需的所有内容。它所需要的一切,仅此而已。如果您必须在包含标头之前就将标头包含在内,则标头的用户(可能包括您)最终将花费与确保标头完整性所花费的时间不成比例的调试时间。一旦他们弄明白了,你就知道谁会受到责备了。@TiernanWatson通常对于一个函数,你不必为头文件而烦恼。在同一个文件中实现函数的所有用法,就完成了。如果一个函数被许多其他文件使用,那么现在就有了一个标题的例子。在这种情况下,您通常会有不止一个函数,您将有一个完整的函数库和数据类型定义。