【问题标题】:How to return a vector in C++? [duplicate]如何在 C++ 中返回一个向量? [复制]
【发布时间】:2018-03-10 23:57:12
【问题描述】:

我了解如何在函数中操作向量,但我对如何返回该向量感到困惑。我对 C++ 很陌生,希望得到任何指导。我目前在这个函数中使用这些库:

#include<iostream>
#include<vector>
#include<string>

using std::cin; using std::cout; using std::endl;
using std::string; using std::vector;

我不确定我是否已经遗漏了一些在编译过程中导致许多错误的东西,但这是我初始化程序时使用的。编译时我似乎有绝对大量的错误。我注意到很多错误都集中在 ostream 上,这可能是我问题的根源。这是我要运行的代码。这是我想在函数中执行的操作的简化版本,但我对这么少的代码的大量错误感到困惑,我假设这些错误是由于尝试返回向量而得出的。感谢您为我提供的任何帮助。

vector<long> function(long small,long big){

    vector<long> vec;

    vec.push_back(big);

    vec.push_back(small);

    return vec;
}

int main(){

    cout << function(1, 2);
}

【问题讨论】:

  • cout 不知道如何处理 std::vector。
  • 没有标准的方式来输出一个向量。您必须单独输出每个元素。
  • 您能否将收到的错误日志包含在您的帖子中?
  • 该错误日志将持续几页。只需复制副本即可。

标签: c++ c++11 vector return long-integer


【解决方案1】:

您的问题不在于返回向量,而在于尝试输出向量。您可以从向量中输出元素,但没有预定义的函数可以输出向量。您可以将一个向量分配给返回的向量,然后遍历该向量(选项 1),或者编写一个函数来输出一个向量(选项 2 和 3)。

Option 1:
std::vector<long> vec;

vec = function(1, 2);

for(long i: vec)
    std::cout << vec.at(i) << " ";

Option 2:
void printVector(std::vector<long> vec)
{
    for(long i: vec)
        std::cout << vec.at(i) << " ";
}

Option 3:
std::ostream& operator<<(std::ostream& out, std::vector<long> vec)
{
    for(long i: vec)
        out << vec.at(i) << " ";
    return out;
}

int main()
{
    std::vector<long> vec;
    //Do whatever to vec
    printVector(vec);
    std::cout << vec;
    return 0;
}

所有选项都会给出完全相同的输出。
如果您想“正确”地执行该功能,则应将其设为模板功能,但由于您是新手,因此我不会讨论。但是,如果您确实想here 是一个演练。

【讨论】:

  • 我想你的意思是i &lt; vec.size()。此外,如果您只是打印值,基于范围的 for 循环将是更好的选择。
猜你喜欢
  • 2014-01-06
  • 2014-08-02
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-07
相关资源
最近更新 更多