相关疑难解决方法(0)

std :: pair <int,int> vs struct with two int's

在ACM示例中,我必须构建一个用于动态编程的大表.我不得不在每个单元格中存储两个整数,所以我决定去找一个std::pair<int, int>.但是,分配大量的数组需要1.5秒:

std::pair<int, int> table[1001][1001];
Run Code Online (Sandbox Code Playgroud)

之后,我将此代码更改为

struct Cell {
    int first;
    int second;
}

Cell table[1001][1001];
Run Code Online (Sandbox Code Playgroud)

并且分配花了0秒.

是什么解释了这个巨大的时间差异?

c++ performance std-pair

29
推荐指数
2
解决办法
1万
查看次数

结构有2个单元格vs std :: pair?

可能重复:
使用带有两个字段和一对的结构有什么区别?

亲爱的大家,

关于对和结构,我有一个小问题.使用std :: pair而不是带有两个单元格的结构有什么好处吗?我已经使用了一段时间,但主要的问题是可读性:如果你想表示例如一个双重(int"标签",双"值")你可以使用a:

typedef std::pair<int,double> myElem;
Run Code Online (Sandbox Code Playgroud)

或者a

typedef struct {
    int label;
    double value;
} myElem;
Run Code Online (Sandbox Code Playgroud)

如果你的语句具有"语义"意义,那么代码就会变得更具可读性(你将永远知道x.label是什么.这与x.first不同).

但是,我猜使用pair有一个优势.它更高效还是其他什么?

c++ struct std-pair

23
推荐指数
4
解决办法
1万
查看次数

什么时候使用std :: pair好?

我的印象是,定义自己的结构总是更好,这样我就可以使用有意义的字段名而不是firstsecond.

标准使用的一个地方std::pair是访问元素std::map.first是关键和second价值.拥有一个特定的key_value_pair模板并不是更好,并将其字段称为keyvalue不是firstsecond?在我看来,这将使代码更加可读,免费.

c++ coding-style std-pair

12
推荐指数
1
解决办法
2605
查看次数

标签 统计

c++ ×3

std-pair ×3

coding-style ×1

performance ×1

struct ×1