背景
在改写某Java实现的键值存储项目中遇到了题目式的需求,即类似下面这样的代码:
System.arraycopy(valLen, 0, bytes, pos, VAL_LEN_SIZE);
C++中没有该方法,需要改一下。
我的解决方案
先直接放代码,之后再细写注释:
auto posForCopy = bytes.begin();
for (int i = 0; i < pos; i++)
{
++posForCopy;
}
/**
* @brief
* 函数原型:
* copy_n(InputIterator sourceBeg, Size num, OutputIterator destBeg);
*/
std::copy_n(rawKeyLenBytes.begin(), RAW_KEY_LEN_SIZE, posForCopy);//header file: #include <algorithm>
pos += RAW_KEY_LEN_SIZE;
解释
我利用了循环,把迭代器的位置先移动了pos个位置,这样就可以起到和Java的System.arraycopy(valLen, 0, bytes, pos, VAL_LEN_SIZE)这个方法一样的作用了。
拓展
那么我就可以回答以下这个StackOverflow链接提到的问题了
https://stackoverflow.com/questions/3844198/c-equivalent-to-javas-system-arraycopy
网友评论