我在第 15 行和第 20 行遇到問題,我試圖將元素推回成對向量
#include <iostream>
#include <vector>
#include <utility>
using namespace std;
int main()
{
int x, y, a, b, c, d, j, m, v;
vector<pair<int, int> > ladder;
cin >> x >> y;
for (int i = 0; i < x; i ) {
cin >> a >> b;
ladder.push_back(pair(a, b));
}
vector<pair<int, int> > snake;
for (int i = 0; i < y; i ) {
cin >> c >> d;
snake.push_back(pair(c, d));
}
vector<int> moves;
cin >> v;
while (v != 0) {
moves.push_back(v);
v = 0;
cin >> v;
}
return 0;
}
我的錯誤是:
prog.cpp: In function ‘int main()’:
prog.cpp:15:30: error: missing template arguments before ‘(’ token
ladder.push_back(pair(a, b));
^
prog.cpp:20:29: error: missing template arguments before ‘(’ token
snake.push_back(pair(c, d));
我這里有要測驗的代碼:https : //ideone.com/ZPKP4s
uj5u.com熱心網友回復:
您的問題在這兩行上:
ladder.push_back(pair(a, b));
ladder.push_back(pair(c, d));
您需要指定這些對的型別:
ladder.push_back(pair<int, int>(a, b));
ladder.push_back(pair<int, int>(c, d));
uj5u.com熱心網友回復:
ladder.push_back(pair(a, b));
您應該傳遞 std::pair 類的模板引數
ladder.push_back(pair<int, int>(a, b));
uj5u.com熱心網友回復:
模板引數推導為std::pair不作業,直到C 17。
您需要顯式指定模板引數,std::pair<int,int>(a, b)或完全繞過,并pair通過使用vector emplace_back成員函式將給定引數pair<int,int>按vector原樣轉發給構造函式來就地構造:
ladder.emplace_back(a, b);
// ...
snake.emplace_back(c, d);
這是您使用的代碼emplace_back。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329657.html
