有序插入到stl :: map更快?

时间:2016-09-28 15:17:25

标签: c++ stl containers

由于n = aubio.note()是有序地图,插入排序数据集会更快吗?特别是如果我们考虑一个大数据集?

2 个答案:

答案 0 :(得分:3)

当然,已经对数据进行了排序。

#include <map>
#include <vector>

int main() {
    std::vector<int> data { 0, 1, 2, 3, 4, 5 };
    std::map<int, int> result;
    // From: http://en.cppreference.com/w/cpp/container/map/insert
    // Amortized constant if the insertion happens in the position just before
    // the hint, logarithmic in the size of the container otherwise.
    for(auto i : data)
        result.insert(result.end(), { i, i} );
}

答案 1 :(得分:1)

是的,这是真的。从大O的角度来看,逐个插入N个元素是O(N * logN),相比之下,构建映射(通常是某种平衡二叉树)只需要O(N)。

您也可以将GCC的libstdc ++实现作为参考 gcc/libstdc++-v3/include/bits/stl_map.h