如何在C ++中返回一个向量?

时间:2018-03-10 23:57:13

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

我理解如何操作函数中的向量,但我对如何返回该向量感到困惑。我是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);
}

1 个答案:

答案 0 :(得分:-1)

您的问题不是返回矢量,而是尝试输出矢量。您可以从向量输出元素,但没有预定义的函数来输出向量。您可以将一个向量分配给返回的向量,然后遍历该向量(Option1),或者编写一个函数来输出向量(选项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;
}

所有选项都会提供完全相同的输出 如果你想正确地做&#34;&#34;你应该把它作为模板功能,但是你很新,我不会进入那个。但是,如果您确实希望here是演练。