我想實現一個排序的指針矢量,像下面如何實現排序的指針向量?
#include <vector>
#include <memory>
#include <algorithm>
//! A random accessed vector with sorted allocated elements.
//! - Elements must be allocated on heap.
//! - The vector manages the memories of its elements.
template<class T, class Compare = std::less<T>>
class SortedPtrVector
{
public:
SortedPtrVector() {}
//! Add an element, return its index.
int Add(T* element)
{
auto position = std::lower_bound(m_vector.begin(), m_vector.end(),
element, Compare); // Wrong here due to compare smart pointers
auto newPosition = m_vector.insert(position, element);
return newPosition - m_vector.begin();
}
private:
std::vector<std::unique_ptr<T>> m_vector;
};
如何實現添加功能?非常感謝。
除了智能指針實現比較的問題之外,如果元素必須被排序,爲什麼不使用map/multimap而不是vector呢?作爲比較,std :: less的包裝器不會比較對象指針指向使用std :: less工作的更少? –
我想隨機訪問元素。它們作爲樹項目放在樹節點下,如文件夾結構。當添加一個新文件時,我首先在樹節點下找到它的位置(行索引),然後將它添加到該位置。謝謝! – user1899020