如何在C ++中存储一对数字?

时间:2010-01-29 20:31:55

标签: c++ stl std-pair

我正在尝试学习C ++,现在我正在编写一个需要输出整数对列表的程序。

处理此问题的最佳方法是什么?我在学校的linux计算机上没有可用的boost库,所以我不相信我可以使用boost :: tuple。

有什么建议吗?

3 个答案:

答案 0 :(得分:31)

查看std::pair<object, object>

编辑:

它是标准的C ++,也是所谓的STL(标准模板库)的一部分。它是一组通用的好数据结构(即可用于存储任何C ++对象类型)。该特定结构用于将“元组”或一对数字存储在一起。它基本上是一个成员“first”和“second”的对象,它指的是你存储在它们中的第一个和第二个对象(任何类型!)。

所以只需声明一个pair<int, int>数组,或者更好的是,使用另一个名为“vector”的STL类型来制作一个动态大小的pair<int, int>列表:vector<pair<int, int> > myList

嘿,你知道什么!已经存在动态大小的对列表,它被称为地图!使用它就像#include <map>一样简单,并声明map<int, int> myMap !!!

编辑:

是的,正如所指出的,地图很好地将一个对象“映射”到另一个对象,因此您不能重复左手边的值。如果没关系,那么地图就是您正在寻找的,否则坚持使用对的矢量....或者看看多图。

std::mapstd::multimap

答案 1 :(得分:19)

使用std :: pair?

#include <utility>
#include <iostream>

int main() {
    std::pair <int, int> p = std::make_pair( 1, 2 );
    std::cout << p.first << " " << p.second << std::endl;
}

您可以制作成对的矢量:

typedef std::pair <int, int> IntPair;

...

std::vector <IntPair> pairs;
pairs.push_back( std::make_pair( 1, 2 ) );
pairs.push_back( std::make_pair( 3, 4 ) );

答案 2 :(得分:9)

虽然std :: pair是最好的使用方法,但我很惊讶没人提到pre-stl解决方案:

struct Pair {
    int first;
    int second;
};

令人担忧的是,人们认为他们需要为这样一个微不足道的问题提供帮助。