对看起来像这样
std::vector<std::pair<uint64 /*id*/, std::string /*message*/>
如果我想要向量中的3个变量?我可以使用配对还是什么?
由于
答案 0 :(得分:3)
如果我理解正确,您可以使用标头std::tuple
中声明的<tuple>
。例如
std::vector<std::tuple<uint64, std::string, SomeOtherType>> v;
答案 1 :(得分:3)
在C ++中,有时我发现定义一些简单的全公共数据类(如
)非常有用struct Event {
unit32 id;
std::string msg;
uint32 time;
Event() : id(0), msg(""), time(0) {} // If needed
Event(uint32 id, const std::string& msg, uint32 time)
: id(id), msg(msg), time(time) {}
};
肯定有点打字,但IMO比在代码中到处使用e.second
或std::get<1>(e)
代替e.msg
更好。
写一次,多次阅读。以增加阅读/理解时间为代价节省写作时间是一个非常糟糕的主意。
答案 2 :(得分:0)
如果您不想要C ++ 11,可以使用
std::pair<uint64, std::pair<std::string, SomeOtherType> >
但这与尝试将三个值放入对一样错误。为什么我认为这是错的? 对表示两个值。如果您将三个或任何其他数量的值放在对中,那么您正在执行this之类的操作。