在ACM示例中,我必须构建一个用于动态编程的大表.我不得不在每个单元格中存储两个整数,所以我决定去找一个std::pair<int, int>.但是,分配大量的数组需要1.5秒:
std::pair<int, int> table[1001][1001];
之后,我将此代码更改为
struct Cell {
    int first;
    int second;
}
Cell table[1001][1001];
并且分配花了0秒.
是什么解释了这个巨大的时间差异?
可能重复:
使用带有两个字段和一对的结构有什么区别?
亲爱的大家,
关于对和结构,我有一个小问题.使用std :: pair而不是带有两个单元格的结构有什么好处吗?我已经使用了一段时间,但主要的问题是可读性:如果你想表示例如一个双重(int"标签",双"值")你可以使用a:
typedef std::pair<int,double> myElem;
或者a
typedef struct {
    int label;
    double value;
} myElem;
如果你的语句具有"语义"意义,那么代码就会变得更具可读性(你将永远知道x.label是什么.这与x.first不同).
但是,我猜使用pair有一个优势.它更高效还是其他什么?
我的印象是,定义自己的结构总是更好,这样我就可以使用有意义的字段名而不是first和second.
标准使用的一个地方std::pair是访问元素std::map.first是关键和second价值.拥有一个特定的key_value_pair模板并不是更好,并将其字段称为key而value不是first和second?在我看来,这将使代码更加可读,免费.