如何从地图中删除矢量对象
How to remove the vector object from the map
我有一个地图std::map<int, std::vector<Data>>myMap
,我的结构定义如下。
struct Data
{
int x;
int z;
int y;
};
在 myMap 中键是 int,值是结构的向量
我得到了 x 和键值。 我想从矢量对象的关键和 x 值匹配的矢量中删除对象
我已经尝试通过给出结构的所有 x,y,z 值来:
myMap[123].erase(std::remove(myMap[123].begin(), myMap[123].end(), {1,2,3}), myMap[priority].end());
但这里只会给出 X 值。
我尝试编写一个函数如下:
void deleteByx(int x)
{
for (std::map<int,std::vector<Data>>::iterator it = myMap.begin(); it != myMap.end(); it++)
{
std::vector<Data> list = it->second;
for (std::vector<Data>::iterator vec_it = list.begin(); vec_it != list.end(); vec_it++)
for(int index = 0;index < list.size();index++)
{
if (vec_it->x == x)
{
list.erase(vec_it);
}
}
}
}
但在这里,该函数从本地向量中删除元素list
如果要访问实际的数据项,则需要获取对该项的引用。 相反,您当前的代码将获得向量的副本。
因此,这一行:
std::vector<Data> list = it->second;
应该是:
std::vector<Data>& list = it->second;
谢谢你的时间。我已经尝试使用以下代码,它对我有用。
for ( itr = myMap[key].begin(); itr != myMap[key].end(); ++itr)
{
if (itr->x == 1)
{
myMap[key].erase(itr);
break;
}
}
相关文章:
- 线程调用的函数对对象删除是否安全?
- 当我使用dynamic_cast并删除对象删除时,析构函数是如何工作的?
- 使用 com 对象删除计划任务
- C 将对象删除为参考
- C样式对象删除的包装器
- 静态映射中动态分配的对象.删除必要的
- C++指向对象删除的指针数组,"Debug assertion failure!"
- 在其成员函数返回之前,将对象删除是不确定的行为吗?
- Python 对象删除检测
- C++安全对象删除
- Qt:RemoveWidget和对象删除
- Qt对象删除导致崩溃
- 删除由两个shared_pointer实例管理的对象(删除其中一个)
- 顶点缓冲区对象(删除进程)opengl
- 设计 -- 按名称或对象删除
- 提升中的异常:进程间,共享内存对象删除
- 使用std::function和std::bind来存储回调并处理对象删除
- 如何使用智能指针防止双重对象删除
- 指针指向对象删除时自动为空
- 对象层次结构中的对象删除责任