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

Mit*_*rax 25 c++ stl std-pair

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

处理这个问题的最佳方法是什么?我在学校的linux电脑上没有可用的升级库,所以我不相信我可以使用boost :: tuple.

有什么建议?

Mah*_*dsi 31

看一下 std::pair<object, object>

编辑:

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

因此,只需声明一个pair<int, int>或者更好的数组,使用另一个称为"向量"的STL类型来制作动态大小的列表pair<int, int>:vector<pair<int, int> > myList.

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

编辑:

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

std::map, std::multimap

  • -1因为map与处理值对不同.地图执行其名称所示:将一个键值映射到另一个值.因此,如果使用map,则不能重复左值. (6认同)
  • 在C++ 98和C++ 03中,你必须使用`vector <pair <int,int >>>(注意末尾的空格!),因为`>>`解析为"右移".这将在C++ 0x中修复. (5认同)
  • `std :: map`和`std :: multimap`都不是"对列表".列表保留其顺序,而地图集合则不保留. (2认同)

小智 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;
}
Run Code Online (Sandbox Code Playgroud)

你可以制作一对矢量:

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 ) );
Run Code Online (Sandbox Code Playgroud)

  • @Computer Guru地图不是"只是一对包装".如果它是红黑平衡二叉树周围的包装. (3认同)

shu*_*ura 9

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

struct Pair {
    int first;
    int second;
};
Run Code Online (Sandbox Code Playgroud)

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

  • STL之前的预标准,上一个千年?你想知道为什么没有人提到它?此外,您的代码缺少`std :: pair`的几个重要/好的功能,因此它甚至不用于说明目的.事实上,提到这种方法的目的是什么? (2认同)
  • 如果你只是想学习C++,这很容易就是最好的答案.它简单,不复杂,易于适应其他问题.一旦他们习惯了struct,适应类并为MyObject.SecondValue之类的东西提供方法很容易教.结合上面的数组建议(即Pair [] MyValues),没有理由不接受这个答案. (2认同)