[英]How can you pass a vector<pair<int, int> > into a function?
如果我尝试将该函数声明为void some_function(vector<pair<int, int> > theVector)
,我会收到一个错误(大概来自“ pair<int
”后面的逗号。关于如何将这个向量与对一起传递的任何想法变成一个函数?
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
void someFunc(int x, int y, vector<pair<int, int> > hello);
int main()
{
int x = 0;
int y = 5;
vector<pair<int, int> > helloWorld;
helloWorld.push_back(make_pair(1,2));
someFunc(x,y,helloWorld);
}
void someFunc(int x, int y, vector<pair<int, int> > hello)
{
cout << "I made it." << endl;
}
错误:“向量”尚未声明
您没有包含定义<utility>
std::pair
<utility>
, 并且您使用的是vector
和pair
,而不是std::vector
和std::pair
。
所有标准模板库都在名称空间std
,因此您必须在STL中为类型加上前缀std
,例如std::vector
。 另一种选择是using std::vector;
添加using std::vector;
在包含<vector>
。
您需要为vector,pair,make_par提供完整的命名空间,它们来自std命名空间:
void someFunc(int x, int y, std::vector<std::pair<int, int> > hello);
int main()
{
int x = 0;
int y = 5;
std::vector<std::pair<int, int> > helloWorld;
helloWorld.push_back(std::make_pair(1,2));
someFunc(x,y,helloWorld);
return 0;
}
void someFunc(int x, int y, std::vector<std::pair<int, int> > hello)
{
std::cout << "I made it." << std::endl;
}
旁注:您可以通过引用将vector传递给someFunc,这将消除不必要的副本:
void someFunc(int x, int y, const std::vector<std::pair<int, int> >& hello);
^^^ ^^
是否包含<vector>
和<utility>
? 您应该在vector
和pair
上都使用std::
名称空间。
例如。 void some_function(std::vector< std::pair<int, int> > theVector)
编辑:当然,您通常不应该按值传递向量,而应按引用传递。
例如。 void some_function(std::vector< std::pair<int, int> >& theVector)
我检查了您的代码,您只需要在#include
下方添加std
命名空间即可。 而且您不需要添加#include <utility>
,没有它就可以工作。
using namespace std
剩下 | 中央 | 对 |
---|---|---|
一 | 二 | 三 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.