如何在 C++ 中的向量结构中使用结构向量?

Posted

技术标签:

【中文标题】如何在 C++ 中的向量结构中使用结构向量?【英文标题】:How to use a vector of structs in a vector structs in 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! 【参考方案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 mypairmypair 在 C++ 中是等价的。 @Peter - 这是真的吗?哎呀!刚刚在这里尝试过,您确实是正确的。感谢您的指正。会更新 是的,这是第二个解决方案:)

以上是关于如何在 C++ 中的向量结构中使用结构向量?的主要内容,如果未能解决你的问题,请参考以下文章

Swig - 结构的 C++ 向量以及如何连接它们

如何将对象存储在向量中的对象中? (C++)

C++ - 3-d 数据结构 - 我应该使用指针向量还是向量向量?

C++结构向量,垃圾字符串值

如何使用 STL 获取结构向量并将其转换为结构元素的向量

如何在 mex 结构中设置向量元素