问题标签 [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.

0 投票
4 回答
23754 浏览

c++ - 使用向量和查找时 C++ 中未解决的外部问题

我已经在一个完全独立的项目中尝试了这段代码,它工作正常(唯一的区别是不工作的项目被导出为 DLL)。这是代码:

RATMTHLIB.CPP

RATMTHLIB.H

错误

就是这样。我不确定为什么它在另一个项目而不是这个项目中有效......

0 投票
2 回答
7561 浏览

c++ - 向量迭代器不兼容

我目前正在为 C++ 开发一个图形库,现在卡在了运行时调试模式下出现断言错误的地方。我还在这里查看了关于 SO 的其他一些问题,但没有一个问题和答案能引导我找到解决方案。在阅读了一些论坛之后,我的印象是发生此错误是因为一旦矢量内容发生更改,迭代器就会变得无效。(例如使用时erase())但是正如您在我的代码中看到的那样,我没有修改向量,只是迭代。

错误在我用 标记的行中//ASSERTION。奇怪的是,neighbor_it它没有指向 ) 中的第一个对象,(*vertex_it)->neighbors(而是指向0xfeeefeee. 通过代码进行调试时,我可以清楚地看到邻居向量至少包含一项。不应该neighbor_it指向这个向量中的第一个对象吗?

更多信息:m_vertices是图中所有顶点的向量,并vertex::neighbors()返回边向量(具有指向邻居/目标顶点的指针)。在这种方法中,我想删除所有指向某个顶点的边。如果找到并删除了相应的边,则返回 true,如果没有指向 的边,则返回 false p_vertex

编辑:(解决方案)

好的,这是我的新代码,它可以正常工作。remove_edge()现在返回一个迭代器,指向它从中删除边的向量中的下一个对象。此外,neighbors()现在返回对相应向量的引用。

再次感谢您的回答!:)

0 投票
1 回答
1899 浏览

stl - std::vector::data() 的状态是什么?

我刚刚意识到我一直在使用std::vector::data()与 std::string 的相似性,但一位同事指出它不是标准的。

显然 Gcc 实现了它,但是查看它的包含文件,我发现了这条评论:

我的问题是:

  • 这种方法是否被其他编译器广泛实施?
  • 它包含在 C++0x 中吗?

(我也想知道DR 464是什么,以及_GLIBCXX_RESOLVE_LIB_DEFECTS就此而言,但我不妨问另一个问题)。

0 投票
6 回答
2332 浏览

c++ - c++ std::vector std::sort 无限循环

每当我尝试对导致无限循环的对象向量进行排序时,我都会遇到一个问题。我正在使用我传递给排序函数的自定义比较函数。

当两个对象相等而不是 true 时,我可以通过返回 false 来解决此问题,但我并不完全理解解决方案。我认为这是因为我的比较功能违反了 cplusplus.com 上概述的这条规则:

比较函数对象,它采用与范围中包含的相同类型的两个值,如果第一个参数在其定义的特定严格弱排序中位于第二个参数之前,则返回 true,否则返回 false。

谁能提供更详细的解释?

0 投票
1 回答
3356 浏览

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

0 投票
4 回答
113 浏览

c++ - C ++:将CSV存储在contianer中

我有一个std::string包含逗号分隔值的值,我需要将这些值存储在一些合适的容器中,例如数组、向量或其他一些容器。是否有任何内置功能可以让我做到这一点?或者我需要为此编写自定义代码?

0 投票
5 回答
157257 浏览

c++ - 如何在 C++ 中逐个元素地比较两个向量的相等性?

有没有办法比较两个向量?

注意:目前,这些向量没有排序并且包含整数值。

0 投票
1 回答
3484 浏览

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); 当然,错误会消失。

0 投票
5 回答
240396 浏览

c++ - 在 C++ 中检查 std::vector包含一定的价值

是否有任何内置函数告诉我我的向量是否包含某个元素,例如

0 投票
4 回答
125 浏览

c++ - 初学者的问题:为什么我不能访问向量中的对象的成员?

这大概是一个基本的问题。

我有一个数据类型“播放器”的向量,我使用结构定义了自己:

然后我有一个函数将这些玩家数据类型的向量作为参数,我想访问结构中的成员,即

之所以at(i)有效,是因为它是矢量的函数。但是,我无法访问player_name. 为什么会这样,我该如何解决?抱歉,如果这是基本且无聊的。