美文网首页
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