vector及cv::Mat删除指定元素并不改变位置

news2024/12/23 4:35:19

1、vector删除指定元素且不改变原有的顺序

使用erase方法,测试例子如下所示:

//测试用例
struct MyStruct
{
    int a;
    int b;
};
std::vector<MyStruct> spotInfo;
spotInfo.push_back({ 1,2 });
spotInfo.push_back({ 3,4 });
spotInfo.push_back({ 5,6 });
spotInfo.push_back({ 7,8 });
spotInfo.push_back({ 9,10 });
spotInfo.erase(spotInfo.begin() + 2);
for (int i = 0; i < spotInfo.size(); i++)
{
    std::cout << "#########spotInfo: " << spotInfo[i].a << "," << spotInfo[i].b << std::endl;
}

结果:

可以看到结果中已经将索引为2的元素剔除了,并且还是保持着原来的元素顺序。

2、cv::Mat删除指定元素且不改变原有的顺序

opencv没有提供删除Mat指定列或行的函数,下边给出了删除Mat指定行的函数:

int deleteOneColOfMat(cv::Mat& object, int num)
{
    if (num < 0 || num >= object.cols)
    {
        std::cerr << "ERRROR: the column num are outside of the object matrix...." << std::endl;
        return -1;
    }

    if (num == object.cols - 1)
    {
        object = object.t();   //求逆矩阵
        object.pop_back();   //弹出最后一行元素
        object = object.t();
    }
    else
    {
        //num 列之后的所有数据前移一列
        for (int i = num + 1; i < object.cols; i++)
        {
            object.col(i - 1) = object.col(i) + cv::Scalar(0, 0, 0, 0);
        }
        object = object.t();
        object.pop_back();
        object = object.t();
    }

    return 0;
}

一维数据时的测试用例:

cv::Mat mat = (cv::Mat_<int>(1, 20) <<
    1, 2, 3,11,
    4, 5, 6,22,
    7, 8, 9,33,
    10, 11, 12,44,
    13, 14, 15,55);
deleteOneColOfMat(mat, 1);
std::cout<<"mat1:"<<mat<<std::endl;
deleteOneColOfMat(mat, 2);
std::cout << "mat2:" << mat << std::endl;
deleteOneColOfMat(mat, 0);
std::cout<<"mat3:"<<mat<<std::endl;

测试结果:

可以看到已经正确将指定位置:1、2、0的元素删除了,并且没有改变原来的位置。

二维数据时的测试用例:

cv::Mat mat = (cv::Mat_<int>(5, 4) <<
    1, 2, 3,11,
    4, 5, 6,22,
    7, 8, 9,33,
    10, 11, 12,44,
    13, 14, 15,55);
deleteOneColOfMat(mat, 1);
std::cout<<"mat1:" << std::endl << mat<<std::endl;
deleteOneColOfMat(mat, 2);
std::cout << "mat2:" << std::endl << mat << std::endl;
deleteOneColOfMat(mat, 0);
std::cout<<"mat3:" << std::endl << mat<<std::endl;

测试结果:

可以看到已经正确将指定列:1、2、0删除了,并且没有改变原来的位置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1592415.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSM整合时的配置文件

文章目录 SSM整合时的配置文件pom.xmlweb.xmlmybatis-config.xmlspring-mvc.xmlspring-mapper.xmldatabase.propertiesapplication.xml项目结构图 SSM整合时的配置文件 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"ht…

蓝桥杯第2152题——红绿灯

问题描述 爱丽丝要开车去上班, 上班的路上有许多红绿灯, 这让爱丽丝很难过。为 了上班不迟到, 她给自己的车安装了氮气喷射装置。现在她想知道自己上班最 短需要多少时间。 爱丽丝的车最高速度是 米每秒, 并且经过改装后, 可以瞬间加速到小于 等于最高速的任意速度, 也可以瞵…

【从浅学到熟知Linux】环境变量详谈(含使用程序获取环境变量的3种方法、如何查看环境变量)

&#x1f3e0;关于专栏&#xff1a;Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程及数据库等内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 环境变量基本概念查看环境变量的方法环境变量相关命令环境变量组织方式及获取环境变量的3种方法验…

链表中常见的使用方法逻辑整理

文章目录 1. 二叉树特点1.1 完全二叉树1.2 满二叉树 2. 二叉树创建2.1 通过先序序列带有叶子结点标识符创建二叉树2.2 通过层次遍历顺序创建二叉树2.3 通过 先序中序 创建二叉树2.4 通过 先序中序 创建二叉树2.5 通过 中序后序 创建二叉树 3. 二叉树遍历通用方法3.1 先序遍历(深…

【软考中级】软件设计师考点分布

文章目录 软考官网资格设置软考报考流程 【软件设计师】考点分布选择题考点分布案例题考点分布 软考官网 中国计算机技术职业资格网&#xff1a;https://www.ruankao.org.cn/ 官网报名平台&#xff1a;https://bm.ruankao.org.cn/sign/welcome 资格设置 计算机软件计算机网…

SSM整合配置案例

一、什么是SSM整合 SSM整合用到两个容器&#xff0c;web容器是root容器的子容器&#xff0c;父子容器关系。 为了方便编写&#xff0c;我们可以三层架构每层对应一个配置类&#xff0c;分别指定两个容器加载 Ioc如何初始化&#xff1f; 二、简单实现整合SSM &#xff08;一…

是的,本科毕业八年,我考研了

今天&#xff0c;是一篇纯分享文。 是的&#xff0c;本科毕业八年&#xff0c;我考研了。 停更10个月&#xff0c;历时296天&#xff0c;我考研上岸了。 小伙伴们&#xff0c;好久不见。 一 发今年第一篇文章的时候刚处理完后续事宜&#xff0c;就简单说了句&#xff0c;后台…

QThread的学习

锁住该线程直到下面的情况之一出现&#xff1a; (1)和该线程连接的对象已经执行完成&#xff08;例如&#xff1a;当它从run()中返回时&#xff09; 如果该线程已经结束&#xff0c;该函数将返回true。 如果该线程还没有开始&#xff0c;它也返回true。 (2)time毫秒已经过去。如…

Linux 内核学习(2) --- regulator 框架

目录 Regulator 介绍Regulator provider 注册struct regulator_descstruct regualtor_configDTS 配置和解析On BoardConfig 配置regulator_ops总结 Regulator Consumer 使用struct regulator 获取regulator 操作使用Multi Regulator 参考博客 Regulator 介绍 Regulator 指的是…

电子烟特效音语音方案选型-WTN6020-8S-E

随着科技的迅猛进步&#xff0c;电子烟行业亦在持续创新与突破&#xff0c;引领着全新的潮流。其中&#xff0c;电子烟产品所特有的吸烟声音特效播报功能&#xff0c;无疑成为了技术革新的璀璨亮点。这一设计巧妙地将吸烟的声效融入使用体验中&#xff0c;使得用户在吸电子烟时…

Javascript 斐波那契搜索-迭代与递归(Fibonacci Search)

给定一个大小为 n 的排序数组 arr[] 和要在其中搜索的元素 x。如果 x 存在于数组中&#xff0c;则返回 x 的索引&#xff0c;否则返回 -1。 例子&#xff1a; 输入&#xff1a; arr[] {2, 3, 4, 10, 40}, x 10输出&#xff1a; 3 元素 x 出现在索引 3 处。 输入&#xff1…

HarmonyOS开发实例:【app帐号管理】

应用帐号管理 介绍 本示例选择应用进行注册/登录&#xff0c;并设置帐号相关信息&#xff0c;简要说明应用帐号管理相关功能。效果图如下&#xff1a; 效果预览 使用说明参考鸿蒙文档&#xff1a;qr23.cn/AKFP8k点击或者转到。 1.首页面选择想要进入的应用&#xff0c;首次进…

【Redis】持久化

文章目录 一、RDB1.1、RDB的自动备份与手动备份1.1.1、自动备份1.1.2、手动备份 1.2、RDB优点1.3、RDB缺点1.4、RDB快照1.5、RDB优化配置项 二、AOF2.1、AOF工作流程2.2、AOF写回策略2.3、MP-AOF实现2.4、AOF优缺点2.5、AOF重写机制 三、RDBAOF混合持久化3.1、数据恢复顺序和加…

生产环境中秒杀接口并发量剧增与负载优化策略探讨

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 1. 实施限流措施 1.1 令牌桶算法&#xff1a; 1.2 漏…

如何申请阿里云服务器学生优惠,入口在这呢!

阿里云学生服务器免费申请&#xff0c;之前是云翼计划学生服务器9元/月&#xff0c;现在是高校计划&#xff0c;学生服务器可以免费申请&#xff0c;先完成学生认证即可免费领取一台云服务器ECS&#xff0c;配置为2核2G、1M带宽、40G系统盘&#xff0c;在云服务器ECS实例过期之…

什么是队头阻塞以及如何解决

前言 通常我们提到队头阻塞&#xff0c;指的可能是TCP协议中的队头阻塞&#xff0c;但是HTTP1.1中也有一个类似TCP队头阻塞的问题&#xff0c;下面各自介绍一下。 TCP队头阻塞 队头阻塞&#xff08;head-of-line blocking&#xff09;发生在一个TCP分节丢失&#xff0c;导致…

ip地址切换器安卓版,保护隐私,自由上网

在移动互联网时代&#xff0c;随着智能手机和平板电脑的普及&#xff0c;移动设备的网络连接变得愈发重要。为了满足用户在不同网络环境下的需求&#xff0c;IP地址切换器安卓版应运而生。本文将以虎观代理为例&#xff0c;为您详细解析IP地址切换器安卓版的功能、应用以及其所…

26、链表-环形链表II

思路&#xff1a; 这道题就是判断链表中是否有环&#xff0c;首先使用集合肯定可以快速地解决&#xff0c;比如通过一个set集合遍历&#xff0c;如果遍历过程中有节点在set中已经存在那么说明存在环。返回这个节点即可 第二种方式就是通过快慢指针方式寻找环。如何做呢&#xf…

震惊!借助Coze白嫖GPT4-128k解决方案

震惊!某大佬借助Coze白嫖GPT4-128k解决方案 前言 此文章介绍如何免费使用GPT-4高级模型并拓展API功能 最近的 Coze 在国内开放了&#xff0c;可以免费使用大模型。但是和国外的有点区别&#xff0c;国外版本使用的chatgpt4&#xff0c;国内版本使用的是语雀大模型。 Coze是一…

《前端防坑》- JS基础 - 你觉得typeof nullValue === null 么?

问题 JS原始类型有6种Undefined, Null, Number, String, Boolean, Symbol共6种。 在对原始类型使用typeof进行判断时, typeof stringValue string typeof numberValue number 如果一个变量(nullValue)的值为null&#xff0c;那么typeof nullValue "?" const u …