假设索引是关键,在C++中什么时候应该使用
unordered_map<int, T>
,什么时候使用vector<T>
或array<T>
?哪种方法性能更好?
请注意,我没有将
map<A, B>
与 vector<pair<A, B>>
进行比较,因此 这个答案 无关紧要。
我认为 Bjarne Stroustrup 在他的许多演讲中都说了一些话,可以归结为 “就选择
std::vector<T>
,因为这在大多数情况下是最好的”。
如果不是,那么你就会发现,然后你必须探索替代方案,比如你提到的那些,看看它们是否能给你更多的东西。
关于
std::array<T, N>
,这可能会更好,因为它是堆上的数组而不是堆栈上的数组。但如果它确实可行的话,计算起来会更容易一些。我的意思是,如果这个东西的元素数量是不可预见的,那么你就不能使用std::array
。