【问题标题】:How to use a vector of structs in a vector structs in c++?如何在 C++ 中的向量结构中使用结构向量?
【发布时间】:2017-04-15 00:38:21
【问题描述】:

我想创建一个火车向量,其中每列火车都需要一个成对向量。

如果我在 main() 之外运行代码,我会收到以下错误:

naive-bayes.cpp:17:15:错误:模板参数 1 无效 向量 对; naive-bayes.cpp:17:15:错误:模板参数 2 无效

在main() 中,我收到以下错误:

naive-bayes.cpp:22:15: 错误: 'template 的模板参数 类 std::allocator' 使用本地类型 'main()::pair' 向量 对; naive-bayes.cpp:22:15: 错误: 试图实例化 'template class std::allocator' naive-bayes.cpp:22:15:错误:模板参数 2 无效

代码如下:

struct pair {
    int index;
    int value;
};

struct trains {
    string label;
    vector<pair> pairs;
};

【问题讨论】:

  • 你#include &lt;vector&gt;了吗?你是using namespace std吗?
  • 而且,如果你有using namespace std,那么如果你有#include &lt;utility&gt;,你就是在自找麻烦,因为有一个模板化的std::pair。更糟糕的是,在某些实现中,即使标准不需要,一些标准头文件也会相互包含。
  • 不要垃圾标签! C 不是 C++ 不是 C!

标签: c++ c++11


【解决方案1】:

你的问题可能是由于using namespace std;。

标准库中有一个std::pair 类型。

试试这个:

#include <string>
#include <vector>

struct pair {
    int index;
    int value;
};

struct trains {
    std::string label;
    std::vector<pair> pairs;
};

int main()
{
    return 0;
}

【讨论】:

    【解决方案2】:

    如果没有完整的程序示例可供使用,我真正要指出的是,您本地的 pair 声明可能会与 std::pair 混淆。将struct pair 的定义更改为struct mypair。

    【讨论】:

    • struct mypair 和 mypair 在 C++ 中是等价的。
    • @Peter - 这是真的吗?哎呀!刚刚在这里尝试过,您确实是正确的。感谢您的指正。会更新
    • 是的,这是第二个解决方案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2013-08-14
    相关资源
    最近更新 更多