emplace_back和push_back() 函数添加 cv::Point 类型数据

emplace_back 和 push_back 是 C++ 中 std::vector用于添加元素的两个成员函数。

区别:

‌push_back‌:接受一个‌已构造好的对象‌(通过拷贝或移动),将其添加到容器末尾。

‌emplace_back‌:‌直接在容器内部构造对象‌,避免额外的拷贝或移动操作。

复制代码
#pragma once
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
#include <fstream>
#include <vector> 



using namespace cv;
using namespace std;

int main()
{	

    vector <cv::Point>  rectpoint;
	vector <cv::Point>  rect;
    // 1.emplace_back写入数据:
	for (int i = 0; i < 9; i++)
	{
		if (i == 0)
		{
			rectpoint.emplace_back(1, 2);
		}
		if (i == 2)
		{
			rectpoint.emplace_back(3, 4);
		}
		if (i == 6)
		{
			rectpoint.emplace_back(5, 6);
		}
		if (i == 8)
		{
			rectpoint.emplace_back(7, 8);
		}
	}
    
    // 2.push_back写入数据:
    for (int i = 0; i < 9; i++)
	{
		if (i == 0)
		{
			
			// 方法1:push_back
			cv::Point p(1, 2);
			rect.push_back(p);
			// 方法2:rect.push_back(cv::Point(1, 2));
		}
		if (i == 2)
		{
			rect.push_back(cv::Point(3, 4));
		}
		if (i == 6)
		{

			rect.push_back(cv::Point(5, 6));
		}
		if (i == 8)
		{
			rect.push_back(cv::Point(7, 8));
		}
	}

    // 3.打印数据rectpoint:
	for (int i = 0; i < 4; i++)
	{
      cout << "rectpoint[i].x=" << rectpoint[i].x << ",rectpoint[i].y=" << rectpoint[i].y << endl;    ;
		 
	}
    // 4.打印数据rect:
	for (int i = 0; i < 4; i++)
	{
		cout << "rect[i].x=" << rect[i].x << ",rect[i].y=" << rect[i].y << endl; ;

	}


    // 5.修改-打印数据:
    rect[0].x = 313.760223;
	rect[0].y = 110.513077;
	rect[1].x = 422.942902; 
	rect[1].y = 112.106293;

	printf("1.rect_point_dilate=%f  rect_point_dilate=%f\n",
		int(rect[0].x), int(rect[0].y));
	printf("2.rect_point_dilate=%d  rect_point_dilate=%d\n",
		int(rect[0].x), int(rect[0].y));

    return 0;
}

打印结果:

rectpointi.x=1,rectpointi.y=2

rectpointi.x=3,rectpointi.y=4

rectpointi.x=5,rectpointi.y=6

rectpointi.x=7,rectpointi.y=8

recti.x=1,recti.y=2

recti.x=3,recti.y=4

recti.x=5,recti.y=6

recti.x=7,recti.y=8

1.rect_point_dilate=0.000000 rect_point_dilate=0.000000

2.rect_point_dilate=313 rect_point_dilate=110

相关推荐
蒸蒸yyyyzwd9 小时前
秋招学习笔记 day46
c++·八股
码匠许师傅12 小时前
【C++三方组件】cpp-httplib:一个头文件起 HTTP 服务
开发语言·c++·http
无名猿13 小时前
new/delete 与 malloc/free:为什么绝对不能混用
c++·内存管理·现代c++·踩坑记录
2601_9622186115 小时前
C++中decltype关键字的实现
开发语言·c++
繁华的地方不一定留下你的脚印15 小时前
C++ std::variant 与 std::visit:安全保存多种类型,写清每个处理分支
开发语言·c++
程序员老陆16 小时前
WIN32_LEAN_AND_MEAN:Windows 头文件里的“精简编译开关”
c++·windows
hold?fish:palm16 小时前
45 二叉树的右视图
开发语言·c++·算法
ShineWinsu17 小时前
对于Redis:Redis的认识以及分布式系统的解析
linux·数据库·c++·redis·缓存·消息队列·分布式架构
布莱克60517 小时前
在C++中,构造函数能不能是虚函数?析构函数为什么要虚?
开发语言·c++·构造函数·析构函数·虚函数
旖旎夜光17 小时前
LeetCode 137 : 只出现一次的数字 II(位运算) —— 题解
c++·笔记·学习·算法·leetcode·力控