#1680. 珅泽教育CSP-J第一轮模拟考第六套 第 29 题
珅泽教育CSP-J第一轮模拟考第六套 第 29 题
第三题
struct flat_map {
struct {
int key;
int value;
} bucket[65536];
int size = 0;
struct result {
int index;
bool hit;
};
result find(int begin, int end, int key) {
if (begin == end)
return {begin, false};
else {
int mid = begin + (end - begin) / 2;
if (key < bucket[mid].key)
return find(begin, mid, key);
else if (bucket[mid].key < key)
return find(mid+1, end, key);
else
return {mid, true};
}
}
int get(int key) {
result p = find(0, size, key);
if (p.hit)
return bucket[p.index].value;
else
return 0;
}
void put(int key, int value) {
result p = find(0, size, key);
for (int i = size; i > p.index; --i)
bucket[i] = bucket[i - 1];
size++;
bucket[p.index].key = key;
bucket[p.index].value = value;
}
};
判断题
flat_map 按照键的大小顺序,将键与值配对,存储到了一块连续的内存序列里( )。
{{ select(1) }}
- 正确
- 错误