在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秒.
是什么解释了这个巨大的时间差异?
我们知道如果我们尝试使用std::map
operator [] 访问不存在的键,该函数将使用该键插入一个新元素.
我们有: std::map<std::string, bool> map_xxx;
是否保证在访问不存在的密钥后map_xxx["nonexistent_key"]
,第二个参数的值将始终为false
?
PS.如果没有,任何想法如何有这种行为?
#include <iostream>
#include <string>
int main() {
std::pair<std::string, int> s;
std::cout << s.second << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
在这个例子s.second
中0
虽然没有初始化.您能否提供C++标准的链接,其中定义了为什么0
.我知道这是因为s.second
被初始化了int()
,但是无法找到标准中所说的那条int()
线0
.