STL(Standard Template Library)容器的嵌套是指在一个容器中存储另一个容器作为其元素。例如,我们可以用 vector<vector> 表示一个二维数组,或用 map<int, vector> 表示一种键值对的映射。通过容器的嵌套,可以灵活地表示复杂的数据结构,如树、图、矩阵等。
比较常见的stl容器嵌套
1.vector<vector>
给定一个长度为 n 的数组 a 和 Q 个询问。每个询问包含一个数 x 和一个整数 k。对于每个询问,求数 x 在数组中第 k 次出现的位置(位置从 1 开始)。如果 x 在数组中出现次数不足 k 次,则输出 −1。
第一行包含两个整数 n 和 Q,分别表示数组的长度和询问的数量, 1≤n,Q≤105。
第二行包含 n 个整数,表示数组a,每个元素满足 1≤ ai ≤109。
接下来的 Q 行,每行包含两个整数 x 和 k,表示一个询问,其中 1≤x≤109,1≤k≤n。
对于每个询问,输出一个整数,表示 x 在数组中第 k 次出现的位置。如果 x 的出现次数不足 k 次,输出 −1。
输入
8 5
1 2 3 2 1 2 3 2
2 1
2 2
3 1
3 2
4 1
输出
2
4
3
7
-1
在样例中,数组为 [1, 2, 3, 2, 1, 2, 3, 2]。
第一个询问是找数 2 的第 1 次出现,位置为 2。
第二个询问是找数 2 的第 2 次出现,位置为 4。
第三个询问是找数 3 的第 1 次出现,位置为 3。
第四个询问是找数 3 的第 2 次出现,位置为 7。
第五个询问是找数 4 的第 1 次出现,数组中没有 4,所以输出 -1。