我正在尝试学习 C++,现在我正在编写一个需要输出整数对列表的程序。
处理这个问题的最佳方法是什么?我在学校的 linux 计算机上没有可用的 boost 库,所以我不相信我可以使用 boost::tuple。
有什么建议么?
编辑:
它是标准 C++ 和所谓的 STL(标准模板库)的一部分。它是一组很好的通用数据结构(即可用于存储任何 C++ 对象类型)。这种特殊的结构用于将“元组”或一对数字存储在一起。它基本上是一个具有成员“first”和“second”的对象,它们引用您存储在其中的第一个和第二个对象(任何类型!)。
因此,只需声明一个数组pair<int, int>
,或者更好的是,使用另一种称为“向量”的 STL 类型来创建一个动态大小的pair<int, int>
:列表vector<pair<int, int> > myList
。
嘿,你知道什么!一个动态大小的对列表已经存在,它被称为地图!使用它就像#include <map>
声明一个map<int, int> myMap
!!!
编辑:
是的,正如所指出的,映射井将一个对象“映射”到另一个对象,因此您不能有重复的左侧值。如果没问题,那么您正在寻找一张地图,否则请坚持使用对的向量....或查看多张地图。
使用 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 ) );
虽然 std::pair 是最好的使用方法,但我很惊讶没有人提到 pre-stl 解决方案:
struct Pair {
int first;
int second;
};
令人担忧的是,人们认为他们需要为这样一个微不足道的问题提供动力。