gpt4 book ai didi

c++ - 如何在多个函数之间传递 vector ?

转载 作者:太空狗 更新时间:2023-10-29 20:28:17 27 4
gpt4 key购买 nike

#include <iostream>
#include <vector>
using namespace std;

class PerformSort
{
public:
const vector<int> * p;
vector<int>& getElements(int);
vector<int>& sortArray(vector<int>&);
void printer(vector<int>&);

}firstSort;

vector<int>& PerformSort::getElements (int num)
{
vector<int> elements(num);
for (int i = 0; i < num; i++)
{
cout << "Enter elements into the array: ";
cin >> elements[i];
}

p = &elements;
return p;
}

vector<int>& PerformSort::sortArray (vector<int>& vector)
{
int holder, min;

for (int i = 0; i < (sizeof(vector) - 1); i++)
{
min = i;
for (int j = (i + 1); j < sizeof(vector); j++)
{
if (vector[j] < vector[min])
{
min = j;
}
}
if (min != i)
{
holder = vector[i];
vector[i] = vector[min];
vector[min] = holder;
}
}


return vector;
}

void PerformSort::printer(vector<int>& vector2)
{

for (int i = 0; i < sizeof(vector2); i++)
{
cout << vector2[i] << " ";
}
}

int main ()
{
int numberOfTimes;
cin >> numberOfTimes;
firstSort.printer(firstSort.sortArray(firstSort.getElements(numberOfTimes)));
return 0;
}

这将返回错误:“从类型表达式对类型引用的初始化无效”。我创建 SelectionSort 算法的第一种方法是尝试按值传递 vector (愚蠢)。在此之后,经过一些研究,我开始改用指针。但是,这导致了上述错误。将所有内容声明为常量似乎并不能解决潜在的错误,尽管如果我理解正确的话,错误在于在需要常量引用的地方传递了临时引用。关于如何实现 vector 的传递和返回有什么想法吗? (我有 Java 背景,刚开始学习 C++,所以如果我在指针方面犯了任何明显的错误,请原谅我)。

最佳答案

按值返回:

vector<int> PerformSort::getElements (int num)
{
vector<int> elements(num);
for (int i = 0; i < num; i++)
{
cout << "Enter elements into the array: ";
cin >> elements[i];
}
return elements;
}

这还将让您摆脱 p,它本身就是一大堆蠕虫。

最后,我注意到您在很多地方使用了 sizeof(vector)。这不会给你 vector 中元素的数量;使用 vector.size() 代替。

关于c++ - 如何在多个函数之间传递 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13574543/

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