问题标签 [stdvector]
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++ - 使用向量和查找时 C++ 中未解决的外部问题
我已经在一个完全独立的项目中尝试了这段代码,它工作正常(唯一的区别是不工作的项目被导出为 DLL)。这是代码:
RATMTHLIB.CPP
RATMTHLIB.H
错误
就是这样。我不确定为什么它在另一个项目而不是这个项目中有效......
c++ - 向量迭代器不兼容
我目前正在为 C++ 开发一个图形库,现在卡在了运行时调试模式下出现断言错误的地方。我还在这里查看了关于 SO 的其他一些问题,但没有一个问题和答案能引导我找到解决方案。在阅读了一些论坛之后,我的印象是发生此错误是因为一旦矢量内容发生更改,迭代器就会变得无效。(例如使用时erase()
)但是正如您在我的代码中看到的那样,我没有修改向量,只是迭代。
错误在我用 标记的行中//ASSERTION
。奇怪的是,neighbor_it
它没有指向 ) 中的第一个对象,(*vertex_it)->neighbors(
而是指向0xfeeefeee
. 通过代码进行调试时,我可以清楚地看到邻居向量至少包含一项。不应该neighbor_it
指向这个向量中的第一个对象吗?
更多信息:m_vertices
是图中所有顶点的向量,并vertex::neighbors()
返回边向量(具有指向邻居/目标顶点的指针)。在这种方法中,我想删除所有指向某个顶点的边。如果找到并删除了相应的边,则返回 true,如果没有指向 的边,则返回 false p_vertex
。
编辑:(解决方案)
好的,这是我的新代码,它可以正常工作。remove_edge()
现在返回一个迭代器,指向它从中删除边的向量中的下一个对象。此外,neighbors()
现在返回对相应向量的引用。
再次感谢您的回答!:)
stl - std::vector::data() 的状态是什么?
我刚刚意识到我一直在使用std::vector::data()
与 std::string 的相似性,但一位同事指出它不是标准的。
显然 Gcc 实现了它,但是查看它的包含文件,我发现了这条评论:
我的问题是:
- 这种方法是否被其他编译器广泛实施?
- 它包含在 C++0x 中吗?
(我也想知道DR 464
是什么,以及_GLIBCXX_RESOLVE_LIB_DEFECTS
就此而言,但我不妨问另一个问题)。
c++ - c++ std::vector std::sort 无限循环
每当我尝试对导致无限循环的对象向量进行排序时,我都会遇到一个问题。我正在使用我传递给排序函数的自定义比较函数。
当两个对象相等而不是 true 时,我可以通过返回 false 来解决此问题,但我并不完全理解解决方案。我认为这是因为我的比较功能违反了 cplusplus.com 上概述的这条规则:
比较函数对象,它采用与范围中包含的相同类型的两个值,如果第一个参数在其定义的特定严格弱排序中位于第二个参数之前,则返回 true,否则返回 false。
谁能提供更详细的解释?
c++ - 关于指针上 std::vector::push_back 中的 EXC_BAD_ACCESS 错误的问题
std::vector肯定很棒,嘿?
不过,我正在EXC_BAD_ACCESS
使用push_back
添加元素。(我曾经遇到过类似的问题,在 SO 上查找它,解决了!可悲的是,这似乎是一个不同的问题。)
(Beat
是一个简单的类结构类,它携带一些数据。)
(beat_display_group
计算一些数字以将每个组放在屏幕上的正确位置。)
这就是问题所在:
有时gdb
带我去stl_vector.h
:
和其他时间new_allocator.h
:
c++ - C ++:将CSV存储在contianer中
我有一个std::string
包含逗号分隔值的值,我需要将这些值存储在一些合适的容器中,例如数组、向量或其他一些容器。是否有任何内置功能可以让我做到这一点?或者我需要为此编写自定义代码?
c++ - 如何在 C++ 中逐个元素地比较两个向量的相等性?
有没有办法比较两个向量?
注意:目前,这些向量没有排序并且包含整数值。
c++ - C++ std::sort 向量
更新的解决方案:
对于我的特殊问题,排序调用位于标记为 const 的 Render 函数中。通过删除 const (不是我的偏好)或将排序放在另一个函数中(在本例中,我的更新的底部),问题得到了解决。正如几个回答者所建议的那样,这是一个 const 问题,只是不是我在寻找的地方!
原始问题
我有一个指向这样声明的对象的指针的 std::vector 列表:
我正在尝试通过 getter 按成员数据对它们进行排序......我也有一个排序谓词。这是排序谓词,后跟 std::sort 调用:
排序调用:
尽管抱怨分配了只读位置或类似内容,但我遇到了十几个错误:
我敢肯定这是我在做的傻事......有人可以帮忙解释一下吗?我对我的 C++ 生疏了,只是重新开始使用它!任何建议将不胜感激。
更新
尽管尝试了 iammilind 的建议以完全删除 const 或确保 const 为 100%,但我仍然遇到相同的错误(换句话说,我尝试将 const 添加到 SortByDistance 谓词的末尾,以及将其从完全的情况。
我认为其中一位评论者可能会建议我在做一些愚蠢而危险的事情:将指向对象的原始指针存储在 STL 容器中。不过,我从来没有这样做过……将对象存储在未在堆上动态分配的容器中的原因是什么?我假设如果我不处理原始指针,我的排序问题的很多复杂性都会消失。
我目前正在像这样创建我的对象:
我当然会在程序完成时释放该内存,但听起来这通常只是一个坏主意?
在一个更相关的注释(我问的问题)上,这是 stl_algo.h 中抱怨的代码:
尽管尝试了各种 const/no-const 解决方案,但我仍然遇到同样的错误。如果我注释掉运行排序的行: std::sort(myObjects.begin(), myObjects.end(), SortByDistance); 当然,错误会消失。
c++ - 在 C++ 中检查 std::vector包含一定的价值
是否有任何内置函数告诉我我的向量是否包含某个元素,例如
c++ - 初学者的问题:为什么我不能访问向量中的对象的成员?
这大概是一个基本的问题。
我有一个数据类型“播放器”的向量,我使用结构定义了自己:
然后我有一个函数将这些玩家数据类型的向量作为参数,我想访问结构中的成员,即
之所以at(i)
有效,是因为它是矢量的函数。但是,我无法访问player_name
. 为什么会这样,我该如何解决?抱歉,如果这是基本且无聊的。