- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试做这样的事情:
#include <vector>
#include <algorithm>
int main()
{
int l[] = {1,2,3,4};
vector<int> vi(4);
copy(l, l+4, vi.begin());
do_stuff();
}
以上代码可以编译运行,没有错误。然后我把它改成这样:
int main()
{
int l[] = {1,2,3,4};
vector<int> vi;
vi.reserve(4); //different from the above code
copy(l, l+4, vi.begin());
do_stuff();
}
根据代码,我改成了vector<int> vi(4);
进入vector<int> vi; vi.reserve(4);
,但是问题来了,就是修改后的代码可以通过编译,但是运行的时候出现seg-fault。
根据 gdb
, 段错误发生在函数 do_stuff();
中.
这是为什么呢?我所做的改变重要吗?我不能使用 reserve
在这里?
最佳答案
reserve()
方法仅分配内存,但未对其进行初始化。它只影响capacity()
,但size()
不会改变。
如果您想创建尽可能多的实例,您应该使用 resize()
来分配内存,并创建与传递给 resize()
的参数一样多的实例。
关于c++ - 小心 vector::reserve?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9077064/
如何在 azure (acs-engine) 中设置保留资源,无需 ssh 集群(仅使用 kubectl 命令)? 最佳答案 使用kubectl使用命令行工具来实现您的目标是不可行的,因为它仅向 ap
我正在尝试在 FreeBSD 机器上启动并运行 Artifactory。我安装了/usr/ports/devel/artifactory,似乎没有问题,然后运行“/usr/local/etc/rc.d
我经常遇到这样的情况,我知道 std::vector 在完成工作后将包含最大数量的元素;让我们说 10000。但是它可以很容易地包含更少的元素,例如 100。无法判断有多少元素得到 .emplaced
我正在做一些测试来测量标准容器在各种条件下的性能,我遇到了一些奇怪的事情。当我在 std::vector 的中间插入许多项目时,如果我首先使用要添加的元素的确切数量调用 reserve,我发现在大多数
这是我正在操作的更新查询。此处错误“set data = :updateValue”,数据是 Dynamo DB 的保留关键字。我想我应该在这里使用 update ExpressionAttribut
假设我们有一个创建并使用可能很大的vector的方法。 已知最大元素数为maxElems。 据我所知,C++ 11的标准实践是: vector fooVec; fooVec.reserve(maxEl
假设我必须编写一个 C 或 C++ 计算密集型函数,该函数有 2 个数组作为输入,一个数组作为输出。如果计算使用 2 个输入数组的频率高于它更新输出数组的频率,我最终会遇到输出数组很少被缓存的情况,因
所附代码包含对 std::vector::assign() 的三个调用。在第一次调用之前,调用 std::vector::reserve() 来分配适当的内存量,然后填充向量。对 allocate()
我认为我可以学习和改进编程的最好方法之一就是查看各种源代码。我正在查看 Blender 的源代码并注意到有关头文件的一些信息。大部分都用过#ifndef包括守卫,其中宏被双下划线包围(例如 __BME
我对这个保留 key 有点困惑,并且案例导致了错误。这是导致错误的示例代码。 var sample = { init: function() { this.sampleFunc
什么时候适合使用string::reserve?我意识到它用于为字符串保留一定数量的字符,但这有什么用呢?如果你过去了,字符串还会调整大小吗?它会提高效率吗? 最佳答案 它将“保留”指定的空间以减少重
有可能已预订或未预订的房间。预订时间为从(日期)到(日期)为止。人员按日期搜索房间:from_field 和til_field。正在尝试查找是否有可用房间。 SELECT rooms.* FROM r
这个问题在这里已经有了答案: Choice between vector::resize() and vector::reserve() (4 个答案) Why can't you access m
我正在尝试将其合并为一个查询。 预订系统有2个表,酒店和预订。 hotels(id, num_rooms) reservations(hotel_id, start_date, end_date) (
我必须为酒店设计和实现预订系统。我有 预订对象的数组列表 房间对象的数组列表 我想在指定日期“预订”房间。 预订没有日期的房间很容易,但日期部分却让事情变得复杂。我正在为此设计而苦苦挣扎,并且有信心朝
正在阅读来自 What are the rules about using an underscore in a c identifier 的答案我偶然发现了以下引文: From the 2003 C
我需要构建一个数据库和服务,我有需要交付给用户的资源。并且交付需要一些时间或需要用户做更多的工作。 这些是我存储信息的表。 Table - Description ________________
BitmapData 有一个名为 Reserved 的属性,它返回一个 32 位 signed integer。 Microsoft 的文档说不要使用此属性。如果我们不应该使用它;那它为什么在那里?它
让我们 std::vector myVec; myVec.reserve(10); 如果我只分配了 5 个元素,我怎样才能重新获得为其他 5 个元素分配的内存? 最佳答案 std::vector v
我正在尝试做这样的事情: #include #include int main() { int l[] = {1,2,3,4}; vector vi(4); copy(l,
我是一名优秀的程序员,十分优秀!