繁体   English   中英

你怎么能传递一个向量<pair<int, int> &gt; 变成一个函数?

[英]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>并且您使用的是vectorpair ,而不是std::vectorstd::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> 您应该在vectorpair上都使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM