Как передать вектор & lt; pair & lt; int, int & gt; & GT; в функцию?

Если я попытаюсь объявить функцию как 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;
}

Ошибка: вектор не был объявлен

0

Решение

Вы не смогли включить <utility>, который определяет std::pair, а также вы используете vector а также pair, вместо std::vector а также std::pair,

Вся стандартная библиотека шаблонов находится внутри пространства имен std, поэтому вы должны префикс типа из STL с std, лайк std::vector, Альтернативой было бы добавить using std::vector; после включения <vector>,

4

Другие решения

Вам нужно предоставить полное пространство имен для вектора, пары, 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);
^^^                                   ^^
3

Вы включили <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)

1

Я проверял ваш код, вы просто должны добавить std пространство имен прямо под вашим #include, И вам не нужно добавлять #include <utility> это может работать без этого.
using namespace std

0
По вопросам рекламы [email protected]