问题标签 [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++ - std::vector insert() 重新分配
我正在查看 std::vector 代码,发现了一些我不太明白的东西。当容量 < size() + 1 时,它需要重新分配缓冲区以便插入新元素。它的作用(据我能够从代码中提取)是:
- 分配新的缓冲区
- 复制旧缓冲区的前缀(0 - 插入索引)
- 在新缓冲区中构造新元素
- 复制旧缓冲区的后缀(索引 - 结束)
- 对旧缓冲区中的所有项目调用析构函数
- 释放旧缓冲区
据我所知,前缀和后缀副本是用 memmove 完成的。memmove 不是数据的纯二进制副本吗?它不调用元素的构造函数,是吗?我想知道的是,如果内存只是被移动,而不是在新缓冲区中重新构造,为什么函数会在旧缓冲区中的元素上调用析构函数?
c++ - 为什么我不能在即时窗口中索引 std::vector?
所以,我有一个向量
我填充了这个向量,并且可以像访问它一样访问它
然而,在即时窗口中,两者
和
根本不工作。在 c++ 中使用即时窗口是否有技巧。我主要来自 C# 背景,一切都很好(并且我在即时窗口中有智能感知)。我没想到 C++ 会很棒,但我认为它适用于整数以外的东西。谁能告诉我我做错了什么?谢谢。
编辑:我应该清楚,在即时窗口中没有任何效果,这只是一个简化的例子
编辑:我处于调试模式
c++ - std::vector 是否使用 push_back 复制对象?
在对 valgrind 进行大量调查之后,我得出结论,std::vector 会复制您想要 push_back 的对象。
这是真的吗?向量不能在没有副本的情况下保留对象的引用或指针?!
谢谢
c++ - push_back 到向量
我有一个奇怪的问题。我有一个向量,我想将对象推到这样的位置:
向量中将有几百个 DEMData 对象。问题是当这段代码完成时,所有项目都等于最后一项“推回”到向量吗?
为什么向量中的其他对象被覆盖?
编辑:
DemData 类很简单,只是一个带有 setter 和 getter 的数据结构:
编辑:
我正在读取一个 XML 文件并根据每个 xml 元素的属性构建 DEMData 对象:
c++ - 以下 std::vector 代码有效吗?
上面的代码安全吗?
emacs - Emacs,向量的 C++ 代码完成
我是 Emacs 的新手,我有以下代码作为示例。我已经安装了GNU Emacs 23.1.1 (i386-mingw-nt6.1.7600),安装了cedet-1.0pre7.tar.gz。, 安装了ELPA , 和公司。你可以在底部找到我的简单 Emacs 配置。
问题是,当我在main()中键入q[0]并按. (点),我看到了向量的 37 个成员,而不是Person ,尽管first_name和last_name是预期的。完成在函数greet()中按预期工作,但它与向量无关。
我的问题是,我怎样才能完成矢量元素的代码完成?
我的 Emacs 配置:
c++ - 在这种情况下使用 std::vector 的哪个构造函数
这看起来很简单,但我很困惑:我创建一百个向量的方式,比如说,int
s 是
但是,查看 std::vector 的文档,我发现它的构造函数是
那么,前一个是如何工作的呢?是否new
使用从默认构造函数获得的初始化值调用构造函数?如果是这样的话,会
我在哪里通过自己的分配器,也可以吗?
c++ - 模板中 T 的向量的向量班级
为什么这段代码不能编译(Cygwin)?
错误:键入
std::vector<std::vector<Ttile, std::allocator<_CharT> >, std::allocator<std::vector<Ttile, std::allocator<_CharT> > > >' is not derived from type
Tilemap'
c++ - 将 C++ 向量作为成员放入使用内存池的类中
我一直在使用 ADO/ODBC 编写用于数据库访问的多线程 DLL,以便与旧版应用程序一起使用。我需要为每个线程保留多个数据库连接,因此我将每个连接的 ADO 对象放在一个对象中,并考虑将它们的数组保存在自定义 threadInfo 对象中。显然,向量在这里会更好——我需要在旅途中删除/重新排列对象,而向量会简化这一点。问题是,我为每个线程分配一个堆以避免堆争用和其他东西,并从那里分配我所有的内存。
所以我的问题是:如何使向量从特定于线程的堆中分配?(或者它会在内部知道从与其包装类相同的堆中分配内存 - 听起来不太可能,但我不是 C++ 人)我搜索了一下,看起来我可能需要编写一个分配器或其他东西 -这看起来像是我不想要的很多工作。还有其他方法吗?我听说 vector 对它里面的所有东西都使用了placement-new,那么重载 operator new 可以在其中工作吗?
我对 C++ 内部知识的匮乏无济于事,因为我主要是一名 C 程序员(即使是这样 - 相对而言)。我很可能在某处遗漏了一些基本的东西。如果没有更容易的事情出现 - 我可能会去做阵列的事情,但希望它不会变成那样。
我正在使用 MS-VC++ 6.0(嘿,笑起来很粗鲁!:-P)。
任何/所有帮助将不胜感激。
c++ - 返回一个指向 std::vector 内的对象
关于返回对 vector 元素的引用,我有一个非常基本的问题。
有一个vec
存储类实例的向量Foo
。我想从此向量访问一个元素。(不想使用向量索引)。我应该如何在这里编写方法getFoo
?