Если я попытаюсь объявить функцию как 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
, а также вы используете vector
а также pair
, вместо std::vector
а также std::pair
,
Вся стандартная библиотека шаблонов находится внутри пространства имен std
, поэтому вы должны префикс типа из STL с std
, лайк std::vector
, Альтернативой было бы добавить using std::vector;
после включения <vector>
,
Вам нужно предоставить полное пространство имен для вектора, пары, 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);
^^^ ^^
Вы включили <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)
Я проверял ваш код, вы просто должны добавить std
пространство имен прямо под вашим #include
, И вам не нужно добавлять #include <utility>
это может работать без этого.
using namespace std