gpt4 book ai didi

c++ - 在字符串类型崩溃的动态数组中实现删除

转载 作者:行者123 更新时间:2023-11-28 04:08:22 26 4
gpt4 key购买 nike

我正在尝试使用模板类在 C++ 中为字符串、int、ulong 等类型实现 STL vector 。下面的删除函数适用于除字符串以外的所有其他数据类型。

template <typename T>
void myArr<T>::erase(ULONG index)
{
if(index >= count)
return;
T* temp_arr = new T[max_count];
if(index == 0)
{
memcpy(temp_arr,(arr+1),(count-1)*sizeof(T));
}
else if(index == count-1)
{
memcpy(temp_arr,arr,(count-1)*sizeof(T));
}
else
{
memcpy(temp_arr,arr,(index-1)*sizeof(T));
memcpy(temp_arr+index,arr+index+1,(count-index)*sizeof(T));
}
delete[] arr;
arr = temp_arr;
count--;
}

当string为数组类型时,程序崩溃,内存访问冲突0x0005。如何处理字符串数据类型...?

最佳答案

您不能对非普通可复制类型使用 memcpystd::string 不可复制,因此您不能在其上使用它。

您需要做的是根据容器持有的类型让删除调用特殊版本的删除。如果它是普通类型,则调用使用 memcpyerase 版本。如果不是,则调用使用 for 循环并执行简单复制/移动操作的 erase 版本。

关于c++ - 在字符串类型崩溃的动态数组中实现删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58310818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com