问题标签 [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++ - 正确处理列表大小为 1 的 std::list 擦除
考虑以下:
只要list.size() > 1
. 一旦列表只包含一个元素,就会调用擦除段错误。我假设是因为没有下一个元素。至少,这是我观察到的行为。有没有正确的方法来处理这个?也许是完全不同的方法?
如您所见,我不想立即清除列表。我只想在元素死亡时删除它们,这可以正常工作,直到它删除最后一个元素。
c++ - 结合两个不同类型的 std::lists:可能吗?
我有一个 Foo* 类型的 std::list 和另一个大小不等的 Bar* 类型。这两种类型都实现了一个定位系统,允许列表按 z 坐标排序以获取绘制顺序(实际上只是一个具有 x、y、z 值的点,它们使用小于谓词函数按 z 值排序)。
除了上面提到的,它们是完全不同的。有没有办法组合列表,以便我可以将所有 z 值相互比较,而不仅仅是它们自己的类型?
现在,例如,要么所有 Foo 都已排序,要么所有 Bar 都已排序;然后要么绘制所有 Foos,要么绘制所有 Bars。这使得即使 Bar 的 z 比 Foo 低,它也会被绘制在顶部。显然不是预期的结果。
在打字时我确实有一个顿悟,并行处理会起作用吗?分别对每个列表进行排序,然后交替绘制它们,Foo、Bar、Foo、Bar 等,还是会导致同样的问题?无论z值如何,有些人在其他人之上绘图?
谢谢。
c++ - 通过不使用模板的迭代器返回 std::list
参考这个答案,第二个代码块。我的问题是:
如果我知道我将只处理std::lists<int>
,而且只处理<int>
。有没有办法在不使用模板并且不按照评论中的建议通过引用传递列表的情况下编写这个(第二个块和第三个块)?你能给我看看吗?
如果实现只涵盖一种类型,我认为避免使用模板是有意义的吗???(还是我太懒了?)
c++ - 正确删除分配在别处的 std::list 中的指针
我有一个 SpriteHandler 类,它允许用户注册一个指向 Sprite 对象的指针以进行绘图,它所做的只是访问对象上的方法。我想编写一个安全捕获,如果用户在程序结束时忘记这样做,它会自动删除与指针关联的内存(而且用户也不必担心!):
我遇到的问题是,在删除第一个指针后,下一个迭代器指向一个已经释放的对象(内存位置是 0xfeeefeee)。
我将如何正确地遍历它们,删除每一个?
linux - 是什么让 gcc std::list 排序实现如此之快?
我有一个链表实现,我正在试验 Mergesort 和 QuickSort 算法。
我不明白为什么 std::list 中的排序操作如此之快。查看 linux 下的 std::list ,它似乎也是链表,而不是基于数组的列表。
我在这里尝试的合并排序与 Dave Gamble 的版本几乎相同: Merge Sort a Linked List
另外,我想我会尝试基于此代码的简单快速排序:http: //www.flipcode.com/archives/Quick_Sort_On_Linked_List.shtml
令人惊讶的是,使用 std::list 和 sort 对 1000 万个随机数进行排序比其他任何一个都快 10 倍左右。
对于那些询问的人,是的,我需要为这个项目使用我自己的列表类。
c++ - 嵌套的 stl 列表
我想制作一个包含列表的列表数组。
例如像这样
显然,此代码不适用于所有编译器。
这是创建这种结构的最佳方法,因为我认为我在这里想错了。
c++ - Replacing std::list object given an iterator
Given an iterator into a std::list, how do you replace the object at the position that the iterator references? Currently all I can think of is calling insert with the new object and iterator (to insert the new object before the element referenced by the iterator), and then calling erase to remove the object to be replaced. Is there a less roundabout way of accomplishing a replace?
c++ - 在指向 std::list 的指针上使用删除?
在我的程序中,我有一个指向std::list
对象的指针,它是这样分配的。
然后稍后在我的程序中我像这样删除它。
出于某种原因,我在删除语句上触发了 Windows 断点。如果我在 delete 语句处中断,我会看到列表存在并且大小为 0。此外,对于引发错误的情况(我认为),我永远不会将元素添加到列表中。
该代码正在使用 VS2005 的 MS VC++ 编译器进行编译。
错误消息说 Windows 触发了一个断点,指示内存损坏。堆栈跟踪说明如下。
可能值得一提的是,这个删除语句是用 C++ 代码编写的,该代码被构建到 .NET DLL 中,因此程序以混合模式运行。
stl - 使用迭代器从 std::list 初始化 std::vector
我正在尝试有效地从 std::list 初始化 std::vector ,但我没有任何运气。
例如,它想要这样的东西:
但是,这不起作用,因为容器似乎只支持它们自己的迭代器类型?我错过了什么吗?我想要完成的事情不是那么容易吗?
c++ - 在 boost::graph 中对 EdgeList 进行排序
我想对 boost::graph 的边缘列表进行排序,定义如下:
添加顶点和边后,如何对边列表进行排序。首先获得最高权重的优势?
我知道可以使用
对于向量,但它不适用于 std::list。