我正在尝试学习C ++,现在我正在编写一个需要输出整数对列表的程序。
处理此问题的最佳方法是什么?我在学校的linux计算机上没有可用的boost库,所以我不相信我可以使用boost :: tuple。
有什么建议吗?
答案 0 :(得分:31)
编辑:
它是标准的C ++,也是所谓的STL(标准模板库)的一部分。它是一组通用的好数据结构(即可用于存储任何C ++对象类型)。该特定结构用于将“元组”或一对数字存储在一起。它基本上是一个成员“first”和“second”的对象,它指的是你存储在它们中的第一个和第二个对象(任何类型!)。
所以只需声明一个pair<int, int>
数组,或者更好的是,使用另一个名为“vector”的STL类型来制作一个动态大小的pair<int, int>
列表:vector<pair<int, int> > myList
。
#include <map>
一样简单,并声明map<int, int> myMap
!!!
编辑:
是的,正如所指出的,地图很好地将一个对象“映射”到另一个对象,因此您不能重复左手边的值。如果没关系,那么地图就是您正在寻找的,否则坚持使用对的矢量....或者看看多图。
答案 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;
};
令人担忧的是,人们认为他们需要为这样一个微不足道的问题提供帮助。