c++ - 运算符 [] 列出 cpp

标签 c++ list

我的列表类正在使用运算符[]。我可以使用这个覆盖类吗?如果有任何理由不为list提供operator[],请说明。如果下面的代码有任何错误,请清除它。

template<class _Ty,class _Ax = std::allocator<_Ty>>  class listadv : public  
std::list<_Ty,_Ax>
{
// should declare in top of the class
public:
    _Ty operator[](int index)
{
    std::list<_Ty,_Ax>::iterator iter = this->begin();
    std::advance(iter, index);
    return *iter;
}
};

在头类中定义。

最佳答案

不提供的原因std::list<T>::operator[]是它不会是 O(1) 的复杂度,而是 O(N) 的复杂度。如果您使用链表,您应该以不涉及索引访问的方式构建您的算法。

我建议反对 listadv像你在 OP 中建议的那样上课。

关于c++ - 运算符 [] 列出 cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18999388/

相关文章:

c++ - 提升 lambda 与 phoenix

c++ - sprintf - 字符串前有 4 个无用的 ascii 字符

javascript - 如何将 List<> 传递给 Javascript 并在组合框 C# 中显示

python - 如何遍历 python 列表,并在继续该过程之前停止加载下一个 URL?

c++ - 如何使用 NDIS 切换到监控模式?

c++ - 将结构拆分为函数参数列表的最佳方法

c++ - 直接在窗口而不是子窗口上绘制?

c++ - 链表实现链表

php - 列出一个目录下的所有文件 PHP

python - 组织元组列表