c++ - 尝试返回向量时收到错误“E0415”
问题描述
尝试从函数完成后返回完成的冒泡排序,我得到了这个:
E0415 不存在合适的构造函数来从 "std::vector<double, std::allocator<double>> *" 转换为 "std::vector<double, std::allocator<double>>"
这是代码
class BubbleSort : SortingAlogrithm
{
void swap(double *xp, double *yp)
{
double temp = *xp;
*xp = *yp;
*yp = temp;
}
public:
vector<double> Sort(vector<double> &newVect, int arraySize)
{
cout << "Bubble sort algorithm commencing" << endl;
int i, j;
for (i = 0; i < arraySize - 1; i++)
// Last i elements are already in place
for (j = 0; j < arraySize - i - 1; j++)
if (newVect[j] > newVect[j + 1])
swap(&newVect[j], &newVect[j + 1]);
cout << "Ordered List: ";
for (int i = 0; i < arraySize; i++)
{
cout << newVect[i] << " ";
}
return &newVect;
}
};
解决方案
return &newVect;
语法不正确,因为返回类型是std::vector<double>
并且&newVect
是类型std::vector<double>*
。
这就是编译器所抱怨的。
你需要使用
return newVect;
改进建议
最好将返回类型更改为引用,这样您就不会在调用函数时强制调用函数进行复制。
vector<double>& Sort(vector<double> &newVect, int arraySize)
{
...
return newVect;
}
最好将返回类型更改为,void
因为调用函数具有正在排序的对象。
void Sort(vector<double> &newVect, int arraySize)
{
...
// Not return statement
}
推荐阅读
- docker - Docker friendlyhello 构建失败
- google-chrome-extension - 使用 Mozilla 的 webextension-polyfill 的 Chrome 扩展中未显示通知
- installshield - Installshield .Net 框架先决条件不为没有 .net 4.0 或更高版本的用户安装
- python - Pygame 在按键时移动物体
- apache-flink - Apache Flink - CoFlatMapFunction 不按事件时间顺序处理事件
- go - Gorilla/schema 是否原生支持 `json` 反射标签?
- android - 为什么 TextInput 上的 onKeyPress 在 React Native (Android) 中不起作用?
- javascript - 设置状态后反应日期数组不更新
- javascript - .each 循环期间未显示 Div 类更改
- javascript - js xml响应返回未定义