如何传递矢量<pair <int,int =“”>&gt;进入函数?</pair <int,>

时间:2013-01-31 03:42:29

标签: c++ vector std-pair

如果我尝试将函数声明为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;
}

错误:'vector'尚未声明

4 个答案:

答案 0 :(得分:4)

您未能包含<utility>,其定义std::pair您正在使用vectorpair,而非{{1 }和std::vector

所有标准模板库都在命名空间std::pair内,因此您必须使用std为STL添加前缀,例如std。另一种方法是在添加std::vector之后添加using std::vector;

答案 1 :(得分:4)

你需要为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;
}

旁注:您可以通过引用将向量传递给someFunc,这将省略不必要的副本:

 void someFunc(int x, int y, const std::vector<std::pair<int, int> >& hello);
                              ^^^                                   ^^

答案 2 :(得分:1)

您是否已加入<vector><utility>? 您应该在std::vector上使用pair命名空间。

例如。 void some_function(std::vector< std::pair<int, int> > theVector)

编辑:当然,您通常不应该按值传递矢量,而是通过引用传递。

例如。 void some_function(std::vector< std::pair<int, int> >& theVector)

答案 3 :(得分:0)

我为您的代码做了准备,您只需在std下方添加#include命名空间即可。并且您不需要添加#include <utility>它可以在没有它的情况下工作 using namespace std