gpt4 book ai didi

c++ - 试图合并两个排序的动态数组 - C++

转载 作者:行者123 更新时间:2023-11-28 02:32:39 25 4
gpt4 key购买 nike

我有一个名为 OrderedList 的模板类,它采用原始数据类型并将其按从小到大的顺序排列到列表中。我正在尝试重载加法运算符以允许将两个列表合并为一个 OrderedList。我希望该方法返回一个新的 OrderedList 对象,但出现错误这是我的 OrderedList + 运算符方法的代码。我还没有测试这个方法中的逻辑,所以我假设有一些错误。我目前正试图让 + 运算符合并数组并返回一个新对象

   template<class mytype>
OrderedList<mytype>& OrderedList<mytype>::operator+ (const OrderedList<mytype>& a)
{
int size = a.size() + count;
int i=0, j=0, k=0;
OrderedList<mytype> *newList = new OrderedList<mytype>(size);

while (i < a.size() && j < count) {
if (a[i] <= list[j]) {
newList[k] = a[i];
i++;
} else {
newList[k] = list[j];
j++;
}
k++;

if (i < a.size()) {
for (int p = i; p < a.size(); p++) {
newList[k] = a[p];
k++;
}
} else {
for (int p = j; p < count; p++) {
newList[k] = list[p];
k++;
}
}
}
return newList;
}

最佳答案

正如@ConnorHollis 已经在评论中指出的那样,您正在+ 运算符中分配一个新的OrderedList 实例。除了由于类型不同而无法正常工作以及因为返回引用通常表示调用者不需要关心所有权而变得危险之外,这也是非常出乎意料的。 +-operator 应该始终返回一个新对象,即返回的复制构造。

关于c++ - 试图合并两个排序的动态数组 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28522653/

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