【发布时间】:2015-02-22 08:55:56
【问题描述】:
我正在实现一个容器类,以确保元素之间的唯一性并将插入和删除限制在仅末尾。有点像一堆独特的元素或具有推送和弹出等功能的有序集合。而且它还必须有一个固定的最大尺寸。
template <class T, int max_size>
class FixedSizedUniqueStack
{
std::vector<T> m_vec;
std::unordered_set<T> m_uset;
public:
FixedSizedUniqueStack():m_vec(max_size),m_uset(){}
bool push(T x)
{
bool success = true;
if( m_uset.insert(x).second ) m_vec.push_back(x);
else success = false;
return success;
}
void pop()
{
if(m_vec.size() > 0)
{
m_uset.erase(m_vec.back());
m_vec.pop_back();
}
}
T back()
{
return m_vec.back();
}
};
【问题讨论】:
-
为什么你的迭代器不能是
std::vector<T>::iterator? -
另外,为什么这个问题不是stackoverflow.com/questions/7758580/…的重复?
-
到底是什么问题?
-
我希望类可以使用 for 循环进行迭代。
标签: c++