VS C++ vector结构体 增加元素 删除元素 获取第一个元素 最后一个元素 清空元素

VS-C++ 系列:所有相关C++文章链接.
VS-C# 系列:所有相关C#文章链接.
bat 系列:所有相关bat文章链接.
OpenCV 系列:所有相关OpenCV文章链接.


AD 系列:所有相关文章链接
Keil 系列:所有相关文章链接
Arduino 系列:所有相关Arduino文章链接
立创EDA [LCEDA]系列:所有相关文章链接


Git SVN 系列:所有相关Git SVN文章链接


Linux 系列:所有相关文章链接


python 系列:所有相关文章链接
Raspberry Pi Pico 系列:所有相关文章链接


所有内容均以最小系统调试成功;逐步提供低分源码工程下载
保证每行代码都经过验证!
如有疑惑,欢迎留言,看见即回;祝好__by Dxg_LC

序言:
1、以上链接为方便整理查看资料用;伴随博文发布更新,如果有不正确处,感谢指正
2、因本人能力有限若有不正确之处或者相关超链接失效,请于相关文章内提醒@博主;灰常感谢
3、友情提醒1,勿要《一支烟 + 一杯茶 == 一坐一下午》 身体重要,革命本钱;
4、友情提醒2,多喝热水;
5、友情提醒3,听媳妇话+多点时间陪家人;
在这里插入图片描述

1、vector结构体 增加元素 删除元素

struct D3T_St_DrawStr
{
	COLORREF Color;
	int Width;
	POINT PointStar;
	char pStr[256];
	int StrLenth;
	D3T_St_DrawStr(COLORREF pColor, int pWidth, POINT pPointStar, char* ppStr, int pStrLenth)
	{
		Color = pColor;
		Width = pWidth;
		PointStar = pPointStar;
		sprintf(pStr, "%s\0",
			ppStr);
		//pStr = ppStr;
		StrLenth = pStrLenth;
	}
};
	
vector<D3T_St_DrawStr> D3t_list_DrawStrs;


int WINAPI SK650_D3T_Live_DrawStrClear(int in_strCount)
{
	//return SK_D3T_Live_DrawStrClear(strCount);
	OrderCode iRet = Success;

	if (in_strCount == -1)
		D3t_list_DrawStrs.clear();
	else
	{
		//D3t_list_DrawStrs.erase(D3t_list_DrawStrs.begin() + in_strCount);//删除第几个元素
		D3t_list_DrawStrs.pop_back();//删除最后一个元素

     D3T_St_DrawStr p = D3t_list_DrawStrs.front();//第一个元素
     p = D3t_list_DrawStrs.back();//最后一个元素
     
     //清空元素+不清空间
     D3t_list_DrawStrs.clear();
     //清空元素+空间
     D3t_list_DrawStrs.swap(vector<D3T_St_DrawStr >());
	}
_Exit:
	return (int)iRet;
}

int WINAPI SK650_D3T_Live_DrawStrAddOrUpdate(int strCount, char* pstr, int strLenth, POINT PointStar, int Width, byte R, byte G, byte B)
{

	OrderCode iRet = Success;
	char ppstr[256];

	sprintf(ppstr, "%s\0",
		pstr);

	POINT pPoint;
	pPoint.x = 0;
	pPoint.y = -100;
	while (strCount >= D3t_list_DrawStrs.size())
	{
		D3t_list_DrawStrs.push_back(D3T_St_DrawStr(RGB(R, G, B), Width, pPoint, ppstr, strLenth));
	}

	if (PointStar.x == 0 && PointStar.y == 0)
	{
		PointStar.y = strCount * 20;
		D3t_list_DrawStrs[strCount] = D3T_St_DrawStr(RGB(R, G, B), Width, PointStar, ppstr, strLenth);
	}
	else
	{
		D3t_list_DrawStrs[strCount] = D3T_St_DrawStr(RGB(R, G, B), Width, PointStar, ppstr, strLenth);
	}
		


_Exit:
	return (int)iRet;
}

Dxg-原创出品,如需转载,请注明出处;

欢迎收藏,点赞;"一键三联"走起,LOL
在这里插入图片描述

好的,以下是代码示例: ```c++ #include <iostream> #include <vector> using namespace std; struct dat { int x; int y; }; vector<vector<dat>> merge(vector<dat>& vDT) { vector<vector<dat>> vvty; vector<dat> vty; vty.push_back(vDT[0]); for (int i = 1; i < vDT.size(); i++) { if (vDT[i].x == vty[0].x && vDT[i].y == vty[0].y) { vty.push_back(vDT[i]); } else { vvty.push_back(vty); vty.clear(); vty.push_back(vDT[i]); } } vvty.push_back(vty); return vvty; } int main() { vector<dat> vDT = {{1, 2}, {3, 4}, {1, 2}, {5, 6}, {7, 8}, {5, 6}}; vector<vector<dat>> vvty = merge(vDT); for (auto vty : vvty) { for (auto d : vty) { cout << "(" << d.x << "," << d.y << ") "; } cout << endl; } return 0; } ``` 在这个示例中,我们首先定义了一个结构体 `dat`,其中包含了两个整型变量 `x` 和 `y`,用来表示一个点的坐标。 然后我们定义了一个函数 `merge`,它接收一个 `vector<dat>` 类型的参数 `vDT`,并返回一个 `vector<vector<dat>>` 类型的变量 `vvty`。在函数内部,我们首先定义了一个 `vector<dat>` 类型的变量 `vty`,用来存储当前正在处理的相同坐标的点集合。接着我们遍历输入的点集合 `vDT`,对于每个点,如果它的坐标与 `vty` 中第一个元素的坐标相同,我们就将它加入到 `vty` 中;否则,我们将 `vty` 加入到 `vvty` 中,清空 `vty` 并将当前点加入到 `vty` 中。最后我们还需要将最后一个 `vty` 加入到 `vvty` 中。 在 `main` 函数中,我们定义了一个 `vector<dat>` 类型的变量 `vDT`,并初始化了一些点。然后我们调用 `merge` 函数,将 `vDT` 作为参数传入,并将返回值赋给 `vvty`。最后我们遍历 `vvty` 中的每个点集合,并输出其中的每个点的坐标。运行代码,输出如下: ``` (1,2) (1,2) (3,4) (5,6) (5,6) (7,8) ``` 可以看到,代码成功地将 `vDT` 中坐标相同的点进行了合并,并返回了一个包含了所有合并后的点集合的 `vector<vector<dat>>` 类型变量 `vvty`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘气坏坏besos

原创干货分析,欢迎大佬打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值