如何在 c++ 中返回修改后的向量
How do I return a modified vector in c++?
为什么(返回 A;)不工作?我收到的错误是"没有可用的用户定义的转换运算符可以执行此转换,或者无法调用该运算符。
如何返回新排序的向量?
int sort(vector <int> A, int n)
{
if( n >= 2 && n <= 43)
{
//sort vector
for(int j=2; j<=n; j++)
{
int tmp = A[j];
int i = j-1;
while (-1<i && tmp < A[i])
{
A[i+1] = A[i];
i--;
}
A[i+1] = tmp;
}
}
return A;
}
您可以使用以下两种方法之一来解决此问题:
1) 将函数的返回类型更改为向量
vector<int> sort(vector <int> A, int n){
// body of function
}
2) 将对向量的引用作为参数传递。它将影响函数原型,如下所示
int sort(vector <int> &A, int n){
// body of function
}
将方法声明更改为:
vector <int> sort(vector <int> A, int n)
当您的返回类型当前为int
时,您正在尝试返回vector<int>
。
您只能从 C/C++ 中的函数返回声明类型的值。
无论如何,在您的情况下,正确的选择不是返回向量,而是通过引用传递它,因此您可以修改原始向量。因此更改您的原型:
void sort(vector<int>& A)
我也删除了n
,因为向量知道它的大小。
此外,如果您不想更改它,为了提高效率,请考虑将 const
限定的引用传递给原始引用。但是,对于易于复制的小型基本类型,不要这样做。
更改
int sort(vector <int> A, int n)
自
vector<int> sort(vector <int> A, int n)
如果您想返回 A。
或者,您可以改用传递 byref。
使用此代码。
vector<int> sort(vector <int> A, int n)
{
if( n >= 2 && n <= 43)
{
//sort vector
for(int j=2; j<=n; j++)
{
int tmp = A[j];
int i = j-1;
while (-1<i && tmp < A[i])
{
A[i+1] = A[i];
i--;
}
A[i+1] = tmp;
}
}
return A;
}
相关文章:
- 选择和修改嵌套向量中的条目的最佳实践
- 如何修改 lambda 内部字符串的向量
- 我可以使用 std::vector::swap 来修改共享向量吗?
- 修改向量中的字符串?(不使用循环)
- 有没有一种优雅的方法可以使用向量修改器并获得新的向量,而不是更改原始向量
- C++11-在结构向量中修改结构的成员
- 使用迭代器遍历向量并修改内容
- 在C 向量中修改对象值的麻烦
- 如何在用户定义类型的向量上使用 vector::p ush_back() 来仅修改一个对象?
- 无法修改从向量<shared_ptr static_pointer_cast派生<Base>>
- 修改另一个类的向量成员时出错
- 如何从类外部修改向量
- 当push_back到向量中时,我是否需要复制构造函数来修改静态成员
- 修改向量后引用 vector.back() 的奇怪行为
- 修改向量的元素(按值、按引用) 函数C++
- 如何修改向量成员的值?
- 使用指针修改向量
- 如何修改向量上的嵌套结构
- 如何修改向量内的元素
- 从另一个线程修改向量中指针的数据是否安全