std :: pair中有2个以上的变量

时间:2014-12-21 21:09:06

标签: c++

对看起来像这样

std::vector<std::pair<uint64 /*id*/, std::string /*message*/>

如果我想要向量中的3个变量?我可以使用配对还是什么?

由于

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.secondstd::get<1>(e)代替e.msg更好。

写一次,多次阅读。以增加阅读/理解时间为代价节省写作时间是一个非常糟糕的主意。

答案 2 :(得分:0)

如果您不想要C ++ 11,可以使用

std::pair<uint64, std::pair<std::string, SomeOtherType> >

但这与尝试将三个值放入一样错误。为什么我认为这是错的? 表示两个值。如果您将三个或任何其他数量的值放在中,那么您正在执行this之类的操作。