不用循环Copy数组的方法

本文介绍了一种利用Java的`arraycopy`方法实现数组插入操作的方法,避免了传统的循环插入方式,提高了效率。通过示例展示了如何将一个指定长度的数组插入到另一个数组的特定位置,并生成新的数组。

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

arraycopy(Object src,  int  srcPos,Object dest, int destPos,int length);

这是在看源代码的时候,看到方法。简单的说就是src是源数组。dest是目标数组。srcPos,和destPos的变量是起始位置,然后length是长度。具体可以看调用。

这个方法是一个native的方法。

 

 

然后我想了一个在数组中插入的方法。可以不用循环。

/**
	 * 主要作用目的是让数组能够完成插入的操作。
	 * 比方说长度为10的char数组,在位置5,插入一个长度为2的数组,产生一个新的数组,长度为12。 
	 */
	@Test
	public void insertChar(){
		
		String src ="abcdefghjk";
		String insert = "xy";
		
		
		char[] srcArray = src.toCharArray();
		char[] desArray = new char[12];
		char[] insertArray = insert.toCharArray();
		
		int position = 5;
		
		//复制Position之前的
		System.arraycopy(srcArray, 0, desArray, 0, position);
		System.arraycopy(insertArray, 0, desArray, position, insert.length());
		System.arraycopy(srcArray, position, desArray, position + insert.length(),src.length()- position);
		
		logger.info("des array size:"+srcArray.length);
		logger.info("des array:"+srcArray.toString());
		
		int i = 1;
		for(char c:desArray){
			logger.info(i+" char:"+c);
			i++;
		}
		
	}
 
### C++ 中使用 `for` 循环遍历数组 在 C++ 中,可以使用多种方式来遍历数组。以下是几种常见的方法: #### 使用传统 `for` 循环 这是最基础的方法之一,通过索引来访问数组中的每一个元素。 ```cpp #include <iostream> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5}; size_t n = sizeof(arr)/sizeof(arr[0]); for (size_t i = 0; i < n; ++i) { cout << arr[i] << " "; } return 0; } ``` 此代码片段展示了如何定义一个整型数组并利用传统的 `for` 循环打印其所有成员[^1]。 #### 使用范围基 `for` 循环(C++11 及以上版本) 自 C++11 起引入了一种更简洁的方式——基于范围的 `for` 循环,它可以直接迭代容器内的元素而无需显式管理下标变量。 ```cpp #include <iostream> using namespace std; int main(){ double numbers[] = {1.1, 2.2, 3.3}; for(double num : numbers){ cout << num << ' '; } return 0; } ``` 这段例子说明了当只需要读取数值时,这种方法既直观又易出错。 #### 迭代器配合标准库算法 对于更加复杂的操作或是想要提高可移植性和灵活性的情况下,则推荐采用 STL 提供的功能来进行处理。比如下面的例子就显示了怎样借助于 `<algorithm>` 库里的 `std::copy()` 函数以及输入/输出流迭代器完成同样的任务: ```cpp #include <iostream> #include <vector> #include <iterator> // For ostream_iterator #include <algorithm>// For copy() using namespace std; int main(){ vector<int> vec{10, 20, 30, 40, 50}; copy(vec.begin(), vec.end(), ostream_iterator<int>(cout," ")); return 0; } ``` 这里仅实现了简单的输出功能,还体现了现代 C++ 编程风格的优势所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值