问题标签 [stdlist]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 从对象指针的 std 列表中擦除对象
我有一个类 Lobby 来处理玩家列表(这是一个抽象类,只有纯虚拟方法)现在我尝试执行以下操作:
我总是遇到两个错误,并且不知道如何解决它们:
我在 C++ 中几乎是新手,但我认为如果我使用基类的指针列表它应该可以工作?!
c++ - 当类型 T 需要构造函数时,是否可以创建类型 T 的 std::list?
例如:
如果我想制作一堆列表,每个列表都有苹果的类型,我想我可以做类似std::list<apple> empire("empire"), macintosh("macintosh")
. 基本上,我想为list<T>
创建列表时声明的类 T 的构造函数传递参数。抱歉,如果我没有正确解释这一点,如果您有这种能力,请随时编辑我的问题。
谢谢
编辑这个问题似乎令人困惑,这可能是因为我举了一个不好的例子。我需要重新设计我的班级。在这个例子之后,虽然我想要的是一个包含所有帝国苹果的列表,并且该列表中的每个苹果都有一个指定的帝国类型,以及一个包含所有 macintosh 苹果的列表,并且该列表中的每个苹果都有一个指定的 macintosh 类型。
因此,为了澄清一些或混淆一些,我们开始吧。
因此,如您所见,存储品种比每次存储更容易;我的班级显然需要重新设计,但这并没有降低答案的有效性。每个人都感谢您的帮助
c++ - 调用 std::list::remove_if( function()::predicate ) 没有匹配的函数
std::list::remove_if
那么,不允许在函数内定义谓词并用作参数吗?
考虑以下无法编译的代码:
现在,如果我替换l.remove_if( pred() );
为
它remove_if
在内部进行,它按预期编译和工作。
甚至更多:如果我在 main之外struct pred
定义,两个测试都按预期工作。
这对我来说没有任何意义。
我认为它可能是具有依赖名称和 ADL 之类的东西,但是......参数remove_if
是一个实例,而不是一个类型。确实,这是一个模板函数,并且参数的类型仍然被解析,但是..
有人可以解释发生了什么以及为什么会发生吗?
c++ - C++ - 错误:“列表”没有命名类型(将对象列表作为类中的成员变量)
我经常遇到“'xxx'没有命名类型”错误,我之前读过的大多数帖子都提到过这个错误与一些依赖问题有关。但是,我似乎找不到我的。这是我得到的:
游戏库.h
玩家组.h
玩家组.cpp
我在 PlayerGroup 类中的两个列表成员变量上都收到此错误:
感谢您提前提供的所有帮助!
c++ - 迭代继承的类 C++ 的列表
我有两个从第三个类继承的类,它们存储在一个列表中。
我正在尝试迭代该列表并调用每个类的已实现函数,但是代码无法编译。
这是我的代码:
此代码无法编译,我收到以下错误消息 ( for the line listIter->foo()
):
'foo' : is not a member of 'std::_List_iterator<_Mylist>'
任何想法为什么?
c++ - 查找存储在 std::list c++ 中的结构的属性
我正在尝试从预定义列表中获取一些数据。
我有以下结构:
我正在创建以下列表:
例如,我正在尝试查找一个文件id
,或者所有无效的文件,是否可以在不使用迭代器循环列表的情况下完成?
c++ - 为什么删除后可以访问列表中对象的成员变量?
结果是:
我通常认为在删除列表中的对象后,我无法再访问 thar 对象的成员变量。但是在上面我c->m_a
删除了c
指向的对象后仍然可以访问,为什么?
c++ - 为双向链表实现 begin() 和 end()
我编写了自己的容器类,其原始内部数据结构是std::list
. 然后我需要创建自己的双向链表。我现在已经实现了我自己的双向链表以及我自己的链表迭代器,但是我在让它表现得像 时遇到了问题std::list
,特别是在使用begin()
and时end()
。
据我了解,begin()
应该指向第一个节点,并且end()
应该指向最后一个元素之后的一个元素。我需要确保当我调用它时end()
我可以递减回有效的最后一个元素。我还需要确保我可以进行正常的遍历,例如...
本质上,我的链表只使用包含数据元素、指向前一个节点的指针和指向下一个节点的指针的节点。
当我第一次尝试实现 myend()
时,我只是将最后一个节点的 next 指针设为 a nullptr
。它独立工作,但与 stl 的行为方式不同。
关于如何实现标准库begin()
以及end()
以相同方式实现的任何建议?
c++ - 堆栈或堆变量创建使用哪个顺序
我有这个代码:
打印出“77”。我预计它会打印出“75”,因为 P 结构的运算符 () 在其参数没有除以 3 的余数时返回 true。'6' 和 '9' 就是这种情况(两个元素七)。我错过了什么吗?
谢谢。
c++ - 元素如何存储在 C++ 中的 STL 列表中
我正在阅读 C++ 标准模板库中的列表。我读取的元素无法使用索引访问。谁能告诉我这些列表是如何存储在内存中的?是顺序的吗?我知道链表是如何实现的。STL 中的列表是否也以相同的方式实现?即一个指针将具有下一个元素的地址?
如果是这种情况,迭代器的增量如何能够指向列表中的下一个元素?迭代器上的增量运算符是否重载?