我怎样才能修复 '(' 标记问题之前缺少的模板参数?
How can I fix the missing template arguments before '(' token problem here?
我在第 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
您的问题出在这两行:
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));
ladder.push_back(pair(a, b));
您应该传递 std::pair class
的模板参数
ladder.push_back(pair<int, int>(a, b));
std::pair
的模板参数 deduction 在 C++17 之前不起作用。
您需要明确指定模板参数,std::pair<int,int>(a, b)
,或者完全绕过它并使用 vector
emplace_back
就地构建 pair
将给定参数转发给 vector
中的 pair<int,int>
构造函数的成员函数:
ladder.emplace_back(a, b);
// ...
snake.emplace_back(c, d);
此处 your code 使用 emplace_back
代替。
我在第 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
您的问题出在这两行:
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));
ladder.push_back(pair(a, b));
您应该传递 std::pair class
的模板参数ladder.push_back(pair<int, int>(a, b));
std::pair
的模板参数 deduction 在 C++17 之前不起作用。
您需要明确指定模板参数,std::pair<int,int>(a, b)
,或者完全绕过它并使用 vector
emplace_back
就地构建 pair
将给定参数转发给 vector
中的 pair<int,int>
构造函数的成员函数:
ladder.emplace_back(a, b);
// ...
snake.emplace_back(c, d);
此处 your code 使用 emplace_back
代替。