草庐IT

vector_tostr

全部标签

c++ - vector 指针位置保证?

假设我有一个整数vector,std::vectornumbers;填充了一堆值,然后我说这样做(条目存在于43)int*oneNumber=&numbers[43];是否保证oneNumber始终指向索引43处的int,即使我将数字调整为类似numbers.resize(46)的大小?我不是100%确定这里的预期行为是什么,我知道vector保证是连续的,但不确定这种连续性是否也意味着vector中的所有索引在其整个生命周期中都将保持在同一个位置。 最佳答案 IsoneNumberguaranteedtoalwaysbepoint

c++ - 如何初始化指针 vector

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我正在编写一个C++程序,我需要初始化一个指针vector。我知道如何初始化一个vector,但如果有人能告诉我如何将它初始化为一个充满指针的vector,那就太好了!

c++ - 在 vector 中找到最近的点

给定一个包含多个值的排序vector,如下例所示:std::vectorf;f.pushback(10);f.pushback(100);f.pushback(1000);f.pushback(10000);我正在寻找最优雅的方法来检索任何双d与其紧邻的两个值。例如,给定值“45”,我希望返回“10”和“100”。我正在查看lower_bound和upper_bound,但它们不符合我的要求。你能帮忙吗?编辑:我决定发布我自己的答案,因为它是我在该线程中获得的所有有用答案的综合体。我对那些我认为最有帮助的答案投了票。谢谢大家,戴夫 最佳答案

c++ - 有没有办法指定嵌套的 STL vector C++ 的维度?

我知道vector可以构造成预定义的大小vectorfoo(4);但是有没有办法指定嵌套vector的维度呢?vector>bar(4);假设我想要一个大小为4的vector,其中包含大小为4的vector...就像一个4x4多维整数数组? 最佳答案 thatconstructor的第二个参数是初始化的值。现在你得到了4个默认构建的vector。用一个更简单的一维示例来说明://4intsinitializedto0vectorv1(4);//*exactly*thesameasabove,thisiswhatthecompiler

c++ - std::vector 元素初始化

std::vectorv1(1000);std::vector>v2(1000);std::vector::const_iterator>v3(1000);这3个vector的元素是如何初始化的?关于int,我测试了一下,看到所有元素都变成了0,这个标准吗?我相信基元仍然是未定义的。我创建了一个包含300000000个元素的vector,给出非零值,删除它并重新创建它,以避免为了数据安全而清除操作系统内存。重建vector的元素也为0。迭代器呢?默认构造函数是否有初始值(0)或初始值未定义?当我检查这个时,迭代器指向0,但这可以是操作系统当我创建一个特殊对象来跟踪构造函数时,我看到对于

c++ - 分配给 std::vector<T>::begin() 的结果是什么?

我对左值和右值略有了解。所以据我所知,我们不能分配给右值,但非常量左值是可以的。#include#includeintmain(){std::vectorv{1,2,3,4,5};v.begin()=v.end()-2;std::cout为什么我可以赋值给begin()但它对元素什么都不做? 最佳答案 v.begin()是一个迭代器。分配给迭代器不会分配给迭代器指向的值。另外,因为v.begin()是纯右值,您分配给的对象在行尾被销毁,而不影响v或其拥有的任何“永久”内存。如果v.begin()是原始指针,编译器会发出错误以尝试分配

c++ - 适当的 vector 内存管理

我正在制作一款游戏,我有一个子弹飞来飞去的vector。子弹完成后,我执行bullets.erase(bullets.begin()+i);然后子弹消失了。然而,它似乎并没有获得内存棒。如果我创建5000颗子弹,然后在这些子弹消失后再创建5,000颗,内存保持不变,但如果我在这5000颗子弹飞行时再创建5,000颗,它将分配新的空间。我需要做什么才能真正释放这些内存? 最佳答案 std::vector类自动管理其内部存储器。它会扩展以容纳您放入其中的所有项目,但通常它不会在您移除项目时自行收缩(尽管它当然会在破坏时释放内存)。std

c++ - 调整多维 vector 的大小

如何调整多维vector的大小,例如:vector>>array;比如我需要数组[3][5][10]? 最佳答案 array.resize(3,vector>(5,vector(10))); 关于c++-调整多维vector的大小,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4311953/

c++ - 如何从 vector 中删除第一次出现的值?

我试图从vector中获取单个元素并将其推到vector的后面,然后将其删除,这样内存中就不会出现空白部分。erase-remove习语可以做到这一点,但它会删除特定值的所有实例。我只想删除第一个。我对标准库算法不太熟悉,也找不到合适的方法(如果有的话)来执行此操作。这是一个例子:intmain(){std::vectorv{1,2,3,3,4};remove_first(v,3);std::cout那么我该如何从这个vector中移除第一次出现的3呢? 最佳答案 先找到,再删除:autoit=std::find(v.begin()

C++:减去 vector

我有两个vector。我需要从vector1中删除vector2中的内容。[编辑:不清楚这是否意味着按照下面的链接或设置差异进行逐元素减法]我使用VisualStudio2010。好像有一个方法:http://msdn.microsoft.com/en-us/library/system.windows.vector.subtract.aspx但它不知何故不起作用,甚至没有代码示例。你能帮帮我吗?如果不存在标准方法,也许您可​​以建议如何通过循环组织它?提前谢谢你。#include"stdafx.h";#include;#includeusingnamespacestd;intmain