【问题标题】:Using forward_list::push_front() with a struct object将 forward_list::push_front() 与结构对象一起使用
【发布时间】:2016-03-10 21:39:54
【问题描述】:

我想开始使用 STL 版本的单链表,但遇到了一个问题。如果我希望我的列表由结构类型的对象组成,而不仅仅是简单的原生类型,如 int、char 等,我对如何使用 push_front() 函数感到两难,因为它只需要一个争论。那么如何使用这样的代码插入新对象:

#include <iostream>
#include <forward_list>

using namespace std;

struct Node
{
    double x;
    double y;
};

int main()
{
    forward_list<Node> myList;
    myList.push_front(???);
}

???感谢您提供的任何帮助!!!

【问题讨论】:

    标签: c++ stl singly-linked-list


    【解决方案1】:

    myList.push_front({3.14, 2.71});myList.push_front(Node{3.14, 2.71});

    Node n;
    n.x = 3.14;
    n.y = 2.71;
    myList.push_front(n);
    

    应该都可以。 Example.

    【讨论】:

    • 非常感谢!!!还有一件事:如果我有一个类而不是结构,我该怎么做?
    • @Otringal in C++ struct == class,没有默认访问修饰符。
    • @Revolver_Ocelot:实际上在 C++ 结构中确实有访问修饰符。我想你想说的是 struct == class 除了结构成员默认是公共的,而类成员默认是私有的。无论如何,我问的原因是我不确定 {a, b, c, etc.} 的顺序是否仍能像结构一样正确映射。
    • @Otringal 我说“没有默认访问修饰符”意味着它们不同。如果你的类是一个聚合,你可以使用聚合初始化就好了。如果您的类(或结构)不是聚合,请定义一些构造函数并让统一初始化完成其工作,或使用emplace_front
    • @Otringal 是的,它就是在这个意义上使用的。我应该在不考虑默认访问修饰符的情况下编写 struct equals class
    猜你喜欢
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2016-05-24
    • 2012-05-21
    • 1970-01-01
    相关资源
    最近更新 更多