stdvector相关内容

打印第二列时的二维字符向量打印空间

这里我有一个二维字符向量 - std::vector>解决方案 = {{“O",“1"},{“T",“0"},{“W",“9"},{“E",“5"},{“N",“4"}}; 从第一列打印任何内容 - 打印正常. cout 但是当我尝试访问第二列的元素时. cout 经过安静的搜索后,我尝试在每个元素周围加上单引号. std::vector>解决方案 = {{'O','1'},{' ..
发布时间:2021-08-30 19:11:41 C/C++开发

为什么 emplace_back(“Hello") 调用 strlen?

贾斯汀在另一个问题上的回答 提出了一个我觉得非常有趣但无法完全解释的观察结果.考虑以下代码: std::vectorv;v.push_back("你好,世界!");//不调用 strlen.v.emplace_back("你好,世界!");//调用 strlen. 如果您查看程序集,emplace_back 会生成对 strlen,而 push_back 没有(在 gcc 中测试)8.1 和 ..
发布时间:2021-08-30 19:11:11 C/C++开发

std::vector 与 std::stack

std::vector 和 std::stack 有什么区别? 显然,vectors 可以删除集合中的项目(虽然比列表慢得多),而堆栈被构建为仅 LIFO 集合. 但是,对于最终项目的操作,堆栈是否更快?是链表还是动态重新分配的数组? 我找不到关于堆栈的太多信息,但如果我正确地描绘了它们(它们类似于实际的线程堆栈;推送、弹出等 - 以及 top() 方法),那么它们似乎非常适合窗 ..
发布时间:2021-08-28 18:36:46 C/C++开发

C++ 标准向量 resize() 函数

resize() 根据给定的大小添加/删除元素.Reserve() 保留内存空间,它不会重新分配内存.我的问题是调整大小是否也与向量的容量相同,但不会增加? 要补充的是: std::vector向量;vector.reserve(5);矢量.resize(5); 有意义吗?是多余的吗?这里的目标是能够覆盖向量中的值,而无需向量分配任何额外空间. 解决方案 来自 本网站: ..
发布时间:2021-07-09 18:31:24 C/C++开发

如何将 std::queue 转换为 std::vector

我需要使用双打队列,因为它作为有序容器具有良好的属性.我想将此队列传递给接受向量的类构造函数.如果我直接这样做,我会收到以下错误: 候选构造函数不可行:没有已知的转换来自'std::queue' 到 'std::vector &'对于第二个参数 如何将队列转换为向量? 解决方案 模拟 queue_like 行为和 vector-like 行为的正确容器是 std::deque. ..
发布时间:2021-06-30 19:30:00 C/C++开发

内部模板类型 std::vector<std::vector<T>> 的函数模板重载或特化

如何实现内部模板类型std::vector>的模板重载功能. 我有一个重载模板程序和一个包含映射、对和向量的复杂数据结构. #include #include #include #include #include 模板类参考>//#6struct is_specialization : std::false_type {};模板类 Ref,类型名称... Args>//#7struct i ..

向向量添加元素时,如何知道将要制作对象的副本?

我的班级中有一个名为 LastQueryInfo lastQuery 的对象.每次这个对象发生变化时,我都会将它添加到一个名为 history 的向量中. 最初,当我执行 history.push_back(lastQuery) 时,我不知道会发生什么 - 向量会复制对象吗?还是会保留对它的引用?因此,如果稍后我修改 lastQuery,是否会修改历史向量中的所有对象(假设它们是引用)? ..
发布时间:2021-06-11 19:42:25 C/C++开发

从 NSData 存储和恢复 std::vector

我试图将 std::vector 存储到 NSData 并直接返回.我的第一次尝试将每个点转换为 NSValue 并将它们存储在 NSKeyedUnarchiver 中,这似乎非常低效.我的测试数据集需要 64MB 的人类可读文本(使用 NSKeyedUnarchiver),与将每个 std:vector 转换为 NSData 相比,生成的存储文件是一个更合理的 896kb.我正在执行以下操作来存 ..
发布时间:2021-06-09 19:36:29 移动开发

如何将向量的后半部分移动到另一个向量?

我有一个向量,我想使用STL算法将向量的后半部分有效地分解为另一个向量.这是我看到的一种方法,但是希望有更有效和简洁的答案,或者至少使用stl算法: std :: vector& entries = someFunction();int numEntries = entry.size();//假设numEntries大于或等于2.std :: vectorsec ..
发布时间:2021-05-16 18:55:22 C/C++开发

为什么此C ++可以工作?(变量的声明/定义)

为什么在每次for循环迭代时,都需要在for循环[for(auto vall:k0L){...}]中声明和定义3个变量?当我执行g ++ code.cpp时,编译器不会抱怨.我知道一个变量只能声明一次.我知道我不能写int = 5;整数= 6;在main()范围内.但是,这就是我在该for循环中所做的事情.谢谢! #include#include#inc ..
发布时间:2021-04-29 20:40:12 C/C++开发

如何从vector中删除重复项的所有实例int

我一直在努力解决“简单"的问题.leetcode问题两个小时了,在这里我需要删除一个或多个出现多次的int实例,然后将非重复对象加在一起.我尝试了大约10种不同的方法,但只能将其简化为每个int的一个副本.这是我编写的最好的解决方案,但是给定输入{1,2,2,3,4},它将返回{1,2,3,4}而预期的输出为{1,3,4} sort(nums.begin(),nums.end());//按数字 ..
发布时间:2021-04-29 18:49:30 C/C++开发

添加到std :: vector时,类字段的行为异常

在以下情况下,我发现了一些非常奇怪的行为(在clang和GCC上).我有一个向量 nodes ,其中有一个元素,是类 Node 的一个实例.然后,我在 nodes [0] 上调用一个函数,该函数将一个新的 Node 添加到向量中.添加新节点后,将重置调用对象的字段!但是,一旦功能完成,它们似乎又会恢复正常. 我相信这是一个最小的可复制示例: #include#inc ..
发布时间:2021-04-19 20:57:17 C/C++开发

使用std :: vector作为原始内存的视图

我正在使用一个外部库,该库有时会给我一个指向整数和大小数组的原始指针. 现在,我想使用 std :: vector 来就地访问和修改这些值,而不是使用原始指针来访问它们. 以下是一个人工例子,可以解释这一点: size_t size = 0;int *数据= get_data_from_library(size);//来自库{5,3,2,1,4}的原始数据,大小已填写std :: ..
发布时间:2021-04-19 20:47:11 C/C++开发

将std :: vector用作简单缓冲区是一种好习惯吗?

我有一个正在对某些图像进行某些处理的应用程序. 考虑到我知道宽度/高度/格式等(我知道),然后考虑定义一个缓冲区来存储像素数据: 然后,而不是在 unsigned char * 上使用 new 和 delete [] ,并单独记录缓冲区大小,我我正在考虑使用 std :: vector . 所以我将这样声明我的班级: #include类MyClass{//. ..
发布时间:2021-04-19 20:46:34 C/C++开发

将Crypto ++对象保存到std :: vector

我想将Crypto ++密钥保存到 std :: vector .不幸的是,只有 CryptoPP :: StringSink 引用了 std :: string ,但没有 CryptoPP :: VectorSink 引用了 std :: vector . 以下代码可以正常工作 std :: string spki;CryptoPP :: StringSink ss ..
发布时间:2021-04-19 20:12:28 C/C++开发