对的向量 - 逗号操作数的左手边没有效果

时间:2011-10-04 20:55:14

标签: c++

我声明了一对矢量:

vector <pair <int, int> > args;

然后我想把一对推入这样的矢量:

args.push_back((1,-1));

它告诉我逗号的左手操作数没有效果。 我哪里出错?

2 个答案:

答案 0 :(得分:7)

args.push_back(std::make_pair(1,-1));。或任意数量的替代方案:

// #1
args.push_back(std::pair<int, int>(1,-1));

// #2
typedef std::vector< std::pair<int, int> > pvector;
pvector args;
args.push_back(pvector::value_type(1,-1));

// #3
typedef std::pair<int, int> intpair;
std::vector<intpair> args;
args.push_back(intpair(1,-1));

// #4
args.emplace_back(1, -1);  // sexy

//...

答案 1 :(得分:0)

(1,-1)是一种语法,意思是'评估1,评估-1,然后使用-1作为值'。它与制作一对实例无关。您必须使用std::make_pair(1,-1)来制作您推送的那对。