memmove实现
看vector的insert方法時跟到最后有一段關于memmove的調用,總覺得不得勁,想知道它的實現
看了個大佬的博客,記錄一下
其中關鍵的三點如下:
(1)當源內存的首地址等于目標內存的首地址時,不進行任何拷貝
(2)當源內存的首地址大于目標內存的首地址時,實行正向拷貝
(3)當源內存的首地址小于目標內存的首地址時,實行反向拷貝
void* memmove(void* dest, const void* src, size_t n)
{
char * d = (char*) dest;
const char * s = (const char*) src;
if (s>d)
{
// start at beginning of s
while (n--)
*d++ = *s++;
}
else if (s<d)
{
// start at end of s
d = d+n-1;
s = s+n-1;
while (n--)
*d-- = *s--;
}
return dest;
}
原文鏈接:https://blog.csdn.net/yzy1103203312/article/details/81006029
總結
- 上一篇: mysql时间排序_mysql – 按日
- 下一篇: python图片转文字_【收藏】图片转成