是否可以在main中返回向量

Is it okay to return vector in main

本文关键字:返回 向量 main 是否      更新时间:2023-10-16

我想知道在main()中返回向量可以吗?例如

aSpecialVectorType main()
{
    aSpecialVectorType xxx(vector::zero);
    // do something here;
    return xxx;
}

我需要在main()之前转发声明"class aSpecialVectorType;"吗?

顺便说一句,在 c++ 中使用"main"以外的其他名称是否合法?

谢谢

编辑1:

如果没有,它可以输出向量的最佳方式是什么?

我的朋友让我给他一个可以作为"向量输入和向量输出"的黑盒,他会用他的 matlab 代码来调用我的代码。这就是我问的原因。我知道如何向量,但不确定是否有一种简单的方法来输出向量。

谢谢

编辑2:

我很惊讶为什么C++有这样的标准,有什么解释吗?:)

在C++中,main需要返回一个int

C++标准,3.6.1.2:

实现不应预定义主函数。此函数不得重载。它应该有一个类型int的返回类型,但除此之外,它的类型是实现定义的。

.

如果没有,它可以输出向量的最佳方式是什么?

要输出矢量,您需要将其复制到文件或输出流:

ostream_iterator<int> out_it(cout, ", ");
copy(myvector.begin(), myvector.end(), out_it);

上面的代码片段将vector<int>的内容写入标准输出。

No.必须通过以下两种方式之一声明 main:

int main()

int main(int argc, char*[] argv)

除此之外的任何内容都不是标准的。

No.
根据标准main()必须返回一个int,并且仅此而已。

No.

main必须返回int.

其他

函数可以自由地使用其他名称并返回它们想要的任何内容。

为了扩展dashblinkenlight的答案,以下是两个程序的通信方式。 不是通过一个捕获另一个程序的返回值,而是通过称为"管道"的过程,将一个程序的标准输出定向到另一个程序的标准输入。 在这里,我将在一个程序中打印出字符串列表,然后另一个程序将期望在其标准输入上显示字符串列表,然后我将向您展示如何同时使用两者:

// Output program
#include <vector>
#include <string>
#include <iostream>
int main()
{
    using namespace std;
    vector<string> v;
    v.push_back("one");
    v.push_back("two");
    v.push_back("three");
    for (int i=0; i<v.size(); ++i)
        cout << v[i] << 'n';
}
// input program
#include <iostream>
#include <vector>
#include <string>
int main()
{
    using namespace std;
    vector<string> v;
    for (string tmp; cin >> tmp; )
        v.push_back(tmp);
    // print the strings in reverse order
    for (int i=v.size()-1; i>=0; --i)
        cout << v[i] << 'n';
}

如果你自己运行第一个程序,它只会打印出 3 个字符串。 如果单独运行第二个程序,它将提示用户输入字符串,直到他使用终止命令。 但是在所有使用最广泛的操作系统上,您可以将两者链接在一起。 然后第一个的输出将成为第二个的输入。 在类Unix系统上,你可以这样做:

./output_program | ./input_program

在Windows上,我认为它是相同的,或者非常相似。 不过不知道。

你第一个问题的答案是否定的。第二个问题的答案是肯定的,但您需要指定可执行文件入口点的名称(通过链接器设置...可能并非在所有链接器工具上都可用)。

以下陈述是错误的请参阅下面的本的评论。有用的信息。

请注意,尽管入口点的名称可以更改,但它必须符合标准参数和返回类型。