【C++】代码实现:截取数组中的数据(方向:从左向右截取、从右向左截取;按指定比例截取数据)

本文介绍了一种使用动态链接库(DLL)进行数组数据截取的方法,支持从左向右或从右向左按50%~100%的比例截取数据,特别展示了计算截取起始位置下标的高效代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、工作场景:

在实际工作场景中,需要从存储了数据的一个数组中截取数据:

1、截取方向允许:(1)从左向右(即:从首部向尾部);(2)从右向左(即:从尾部向首部)。

2、按指定比例截取数据:50%~100%(不得少于 50%)。

3、因为是以动态链接库(DLL)文件的方式提供给 Java 程序调用,所以增加了以下参数:输入数组的大小、输出数组的大小。

二、代码特点:

我最得意的是计算确定提取数据起始位置下标的那部分。

两句代码搞定,自诩为神来之笔。------得意一下,哈哈哈。。。。

三、实现代码:

//样本数据截取
extern "C" __declspec(dllexport) int SampleDataTruncate(double* input, long size, int direct, int ratio, double* output, long &size_output) {

	if (ratio < 50) return 1;   //截取比例不得小于 50%
	long start(0), end(0);

	//direct取值只能是1或2(1-从左开始截取  2-从右开始截取)
	switch (direct)
	{
	case 1:
		//计算从左截取起始下标
		start = 0;
		end = size*ratio / 100;
		break;

	case 2:
		//计算从右截取起始下标
		start = size* (100 - ratio) / 100;
		end = size;
		break;

	default:
		return 1;
	}

	long j(0);
	for (long i = start; i < end; i++)
	{
		output[j] = input[i];
		++j;
	}

	size_output = j;

	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值