stdvector相关内容

C++中两个指针向量的减法和交集

我有两个向量指向我的自定义类对象. 这两个向量中的指针并不指向同一个对象,但存储在对象中的值是相同的. 我的自定义类结构是: 类项目{字符串 ItemId;字符串项目描述;浮动商品价格;} 第一个向量(V1) 有n 个条目,第二个向量(V2) 有m 个条目(n>m). 我必须执行两个操作: 获取在 V1 和 V2 中具有共同对象的向量.通用,我的意思是说元素的 ItemId 是 ..
发布时间:2021-08-30 19:13:13 C/C++开发

_Orphan_range 使用静态向量时崩溃

在我的项目中,我使用静态对象的构造函数来收集指针,例如注册方法.很简单,没有魔法.但是在开始时我遇到了崩溃,我无法解释这里发生了什么.崩溃可在 Windows 上使用 MSVC 或 Clang 重现,两者都使用 MSVC 标头.给出了以下简单示例.谁能给我一个提示,为什么这会导致问题? 这段代码在 Linux 上的 GCC 和 Clang 中似乎工作得很好: https://gcc.g ..
发布时间:2021-08-30 19:13:08 C/C++开发

使用擦除删除 std 向量的元素对象:a) 内存处理和 b) 更好的方法?

我有一个 vec_A 将 class A 的实例存储为:vec_A.push_back(A()); 我想在后期删除向量中的一些元素,有两个问题:a) 元素被删除为:vec_A.erase(iterator) 是否有任何额外的代码我需要添加以确保没有内存泄漏?. b) 假设条件 if(num 是如果 num 在特定的 numberList 中.鉴于此,是否有比我在下面说明的更好的方法来删 ..
发布时间:2021-08-30 19:13:05 C/C++开发

C++ - 通过指针访问向量元素的安全性

在我的一个 C++ 项目中,我使用一个 vector 来保存一堆 struct ,这些 struct 保存了一个简单游戏的许多元素(即:tic-tac-toe、坐标、x 与 o 等).即: struct gameMove{整数 x;输入 y;国际球员;有序;}; 每次在单局游戏中,每当玩家进行移动(即:放置x 或o),信息都存储在向量中 通过 push_back(),创建一个“撤消"功能,目前 ..
发布时间:2021-08-30 19:12:59 C/C++开发

父类和子类的 std::vector

我需要创建一个可以包含我的父类和子类数据的向量. 这就是我所做的.. Vehicle 是父类 汽车是子类 关于 Car.cpp ,它有以下内容 struct 点{整数 x,y};类汽车:公共车辆{私人的:点轮点[4];双区;民众:无效设置点();};void Car::setPoint(){int xData,yData;cout ..
发布时间:2021-08-30 19:12:53 C/C++开发

从向量复制<指针*>到向量<指针*>在 C++ 中

我创建了一个向量 A 并想使用以下方法复制到另一个类中的向量 B,这是正确的方法吗?向量 A 可能会被破坏!我在谷歌搜索,但没有找到好的解决方案和有意义的解释.谢谢大家 void StateInit(vector listBtn){_m_pListBtn = listBtn;}; 解决方案 是与否,您正在按值传递向量: void StateInit(vector listBtn){_m_p ..
发布时间:2021-08-30 19:12:50 C/C++开发

转换向量到整数

我正在寻找用于将整数向量转换为普通整数的预定义函数,但我没有找到. vectorv;v.push_back(1);v.push_back(2);v.push_back(3); 需要这个: int i=123//直接从vector转为int 有没有可能实现这一目标的方法? 解决方案 使用 C++ 11: reverse(v.begin(), v.end());整数十进制 = 1;整 ..
发布时间:2021-08-30 19:12:47 C/C++开发

如何编写一个可以接受数组或向量的函数?

我想编写一个带有一个参数的 C++ 函数,以便可以传入以下任一类型: std::vectorstd::array整数数组[numElements]int *ptr = new int[numElements]等等 模板是实现这一目标的最佳方式吗? 解决方案 如果你希望能够做到 func(v) 你不能,因为我想不出你的函数可以推导出动态分配的int[numElements]的大小. ..
发布时间:2021-08-30 19:12:44 C/C++开发

获取给定地址的 std::vector 元素的索引

假设我有一个 std::vector 并且我通过某种方式获得了第 n 个元素的地址.给定我的 std::vector 的基地址,是否有一种简单的方法(比遍历向量更快)来获取元素出现的索引?让我们假设我确定元素在向量中. 解决方案 既然你知道元素在 vector 中,并且 vector 保证它的存储是连续的,你可以这样做: index = element_pointer - vector. ..
发布时间:2021-08-30 19:12:41 C/C++开发

如何转换 std::vector<vector>作废*

我想知道如何将 std::vector 转换为 void*,例如: std::vector像素_(宽*高,背景颜色); 现在我想将 pixels_ 转换为 void* 以便我可以 memcpy pixels_. memcpy ((void*)destinationBuffer->pixels_, (void*)sourceBuffer->pixels_, \sizeof(ColorData) ..
发布时间:2021-08-30 19:12:38 C/C++开发

为什么在 C++ 中找不到向量

有什么选择? 我应该自己写吗? 解决方案 有 std::find() 算法,它在迭代器范围内执行线性搜索,例如, std::vectorv;//查找向量中第一个值为 42 的元素://如果没有这样的值,它 == v.end()std::vector::const_iterator it = std::find(v.begin(), v.end(), 42); 如果您的向量已排序, ..
发布时间:2021-08-30 19:12:33 C/C++开发

将向量元素移动到向量的后面

有没有比擦除元素并将其重新添加到后面更好的方法(更快或使用更少的代码符号)? template void moveItemToBack(std::vector& v, size_t itemIndex){T tmp(v[itemIndex]);v.erase(v.begin() + itemIndex);v.push_back(tmp);} 解决方案 您可以使用 std::rotate ..
发布时间:2021-08-30 19:12:30 C/C++开发

如果 std::vector 包含的元素大小增加,它是否必须调整大小?

如果这个问题太基本而无法在这里提出,我深表歉意;我一直在阅读一些关于 std::vector 的内容,我知道当大小达到容量时它必须调整大小.如果它包含的对象很大,这可能是一项昂贵的操作,因为它必须复制每个对象. 我的问题是:std::vector 如何处理它所包含的对象的实际大小增长?假设我初始化了一些 std::vector向量(100); 并且每个 Obj 都被初始化为非常小的东西. ..
发布时间:2021-08-30 19:12:27 C/C++开发

如何删除排序向量中的重复项

我目前有一个 vectorc 包含 {1,2,2,4,5,5,6}我想删除重复的数字,以便 c 将有{1,4,6}.互联网上的许多解决方案似乎只是删除了其中一个重复项,但我正在尝试删除所有出现的重复号码. 假设 c 总是排序的. 我现在有 #include #include int main() {向量c{1,2,2,4,5,5,6};for (int i = 0; i ..
发布时间:2021-08-30 19:12:24 C/C++开发

为什么 std::vector::insert 在插入点之后使所有迭代器失效

当insert-ing 到std::vector 时,C++ 标准确保插入点之前的所有迭代器只要容量 未耗尽(参见 [23.2.4.3/1] 或 std::vector 迭代器失效). 不允许插入点后的迭代器保持有效(如果容量没有耗尽)背后的基本原理是什么?当然,它们随后会指向一个不同的元素,但是(从 std::vector 的假定实现来看)它应该仍然可以使用这样的迭代器(例如取消引用它或增 ..
发布时间:2021-08-30 19:12:20 C/C++开发

什么时候应该使用vector的reserve()?

我总是使用resize(),因为我不能使用reserve,因为它给出了错误:向量下标超出范围.当我阅读了有关 resize() 和 reserve() 差异的信息时,我看到了诸如 Reserve() 设置最大值之类的东西.可以分配的元素数量,但 resize() 目前是我们所拥有的.在我的代码中,我知道最大.元素数量但 Reserve() 没有给我任何有用的东西.那么,如何使用reserve()呢 ..
发布时间:2021-08-30 19:12:17 其他开发