美文网首页
C++实现Java的System.arrayCopy()方法

C++实现Java的System.arrayCopy()方法

作者: 希望是水户洋平 | 来源:发表于2021-05-06 17:45 被阅读0次

背景

在改写某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

相关文章

网友评论

      本文标题:C++实现Java的System.arrayCopy()方法

      本文链接:https://www.haomeiwen.com/subject/hdvddltx.html