问题标签 [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::list
我整晚都在为这个而绞尽脑汁。我正在使用 Windows 应用程序,无论出于何种原因,我都无法std::list
在堆栈上创建一个实例。它导致CreateWindow()
失败,并且没有告诉我任何有用的信息。
我的 Window 代码非常标准,除了我的程序的一些东西之外,没有什么不寻常的。
}
这是我尝试创建std::list
我试过把它移到其他班级,无论我放在哪里,它似乎都炸毁了。如果我改用std::list<int> *
它,并在 ctor 中分配它,则没有问题。我真的不想为此使用指针,这很愚蠢。 std::vector
也可以正常工作。如果我无法解决这个问题,我可能最终会使用它。有没有人见过这样的事情?
gcc - 列表插入为 c++11 返回 void,为什么?
首先介绍一下背景:
我一直在写一个编程作业,这需要我解析一个文本语法文件。在此,我需要将 a 中的占位符字符串替换std::list<string>
为其对应的扩展(该字符串表示一个句子)。
我遍历列表,并删除匹配的字符串:
其中 itr 是迭代器, ls 是我的std::list<string>
然后我插入扩展
其中 other 是存储扩展的容器。
我的问题是上一行显然不起作用。它应该是有效的 c++11 语法,我真的希望迭代器指向我刚刚插入的内容的开头。但我得到编译错误,insert
显然返回void
.
我已经检查过 cplusplus.com,据我所知,我认为我的使用方式没有任何问题。标准(或至少我能看到的标准)规定:
我正在使用带有-std=c++11
标志的 g++ (4.8.1) 进行编译,但是当我查看 stl_list.h 时,(gcc-directory)/include/c++/4.8.1/bits
我看到:
这仅仅是因为 gcc 还没有完全实现 c++11 库吗?他们忽略了这一点吗?似乎并不难做到,并且围绕它的所有其他插入函数都返回一个迭代器。
我知道我可以轻松解决这个问题,但仍然很高兴知道发生了什么。
谢谢!
编辑显然这回答了我的问题。不好意思打扰了,可惜之前没找到。
c++ - 迭代子类列表错误
我对 C++ 比较陌生,并且来自 C# 背景我在这个列表迭代中遇到了麻烦:
我有一种方法可以遍历对象列表并为每个对象调用一个更新方法,效果很好。该列表具有类型std::list<EngineComponent>
,称为engineComponents
。
我也有一个EngineComponent
被调用的子类DrawableEngineComponent
。
当我尝试进行类似的迭代时出现问题:
这会产生错误“不存在从 'EngineComponent' 到 'DrawableEngineComponent' 的合适的用户定义转换”。鉴于这个实现在 C# 中都很好而且很花哨,我不确定如何最好地在 C++ 中解决这个问题。
我可以想到一些可以/应该工作的替代方法,但我想知道 C++ 中是否有功能以类似于 C# 的方式执行此操作,而无需手动定义转换。
有关两个类别的定义如下:
是的,我稍微复制了 XNA 框架;)
c++ - Outputting a vector of of lists in C++
I'm having trouble outputting my vector of lists:
I've got it so that it will fill up:
but how to output it? I've tried many different approaches, but a lot of them are giving me errors.
Do I have to overload the operator? I'm not entirely sure how I will be able to do it.
c++ - std::list 复制到 std::vector 跳过元素
在我的 Objective-C 应用程序中运行 C++ 代码时,我遇到了一个相当奇怪的异常。我正在使用 libxml2 读取 XSD 文件。然后,我将相关标签作为 Tag 类的实例存储在 std::list 中。然后我使用列表上的迭代器将此列表复制到 std::vector 中。但是,有时列表中的某些元素不会复制到向量中。任何帮助将不胜感激。
c++ - 包含 std::function 的 std::list
我想要实现的是std::list
包含std::functions
. 我正在尝试实现一个回调系统,其中可以将函数添加到列表中,然后可以循环遍历列表并调用每个函数。
我在 A 课上的内容是:
然后在B级
...
但在GameControllerHub::invokeForward
我得到错误
“类型 'std::list >::iterator'(又名 '__list_iterator')不提供呼叫运算符”
我正在用 Xcode 编译
c++ - 运算符重载!=没有匹配错误
在一个函数中,我正在检查列表的值是否是列表的末尾:
在这一行中,neighbors 返回向量的邻接列表:
returnEdge 返回该列表中的 Edge:
错误出现在我在这里复制的第一行代码处,并且是:
我在文件中重载的运算符是:
我认为我的运算符重载错误,或者 returnEdge 和 neighbors().end() 没有返回相同类型的变量。我该如何解决?
c++ - 使用反向迭代器插入到 std::list 会更改原始反向迭代器的值
在网上搜索了很多,但找不到问题的答案。
我正在使用它的 reverse_iterator 向 std::list 插入一个值。虽然插入按预期发生在适当的位置,但我注意到用于插入的原始 reverse_iterator 的值发生了变化。完全不相关的 reverse_iterator 的值也会发生变化。我已经能够在一个简单的例子中重现这个
结果
这是预期的行为。如果是这样,如何使用反向迭代器将项目插入列表(或者在这方面它没用)?
c++ - C++标准::列表::iterator 迭代器是否有权访问成员函数?
这是我第一次在 SO 上发帖,但我已经在这里使用了一段时间的答案和帮助。
我现在正在做一个简单的纸牌游戏,我已经计划了几年。最终这将成为我学校的高级项目(不要求任何人为我做作业!)
当我尝试通过几个类将列表的内容输出到控制台时,我现在遇到了一个问题。
我想弄清楚这条线是否
是否有效。我正在解决工作中的问题,我现在没有能力尝试任何事情。在我今天早上不得不放弃这个项目之前,我遇到了一些编译错误,这让我相信我需要重载 << 操作符,我尝试过,但由于某种原因最终得到了几个链接错误。
我一天中的大部分时间都在研究,但没有遇到任何让我跳出来作为正确解决方案的情况,但这个小块是我发现的,对于我正在尝试的东西来说似乎是最正确的做。
该块是否会像现在一样打印存储在手牌列表中的卡片对象的名称?是的,Card Class 确实具有 GetName() 函数,并且声明正确。
c++ - 列表迭代器与向量迭代器
我有两个关于迭代器的问题。
我认为,一旦您为 STL 容器(例如向量或列表)定义了迭代器,如果您将元素添加到容器中,那么这些迭代器将无法访问它们。但是下面的代码定义了一个包含五个元素的列表,然后在每次循环迭代中添加另一个元素并导致无限循环:
但是,对向量执行相同操作会导致错误:
/li>我认为当必须调整向量容器的大小时,它会以 2 的幂次方进行,并且位于新的内存区域,这就是为什么如果向向量添加元素时不应该为向量定义迭代器(因为迭代器不会被传递到新的内存位置)。例如,我认为一个包含 16 个元素的向量,在调用 push_back 函数后,将分配 32 个元素的空间,整个向量将被重新定位。但是,以下代码没有发生这种情况。我是不是弄错了?
/li>