将对象插入列表

时间:2016-04-16 01:29:29

标签: c++

任何善良的灵魂都知道如何纠正以下代码

“d1.insert(d1.begin(),it [0]);”所以输出如下:

程序将成功运行并显示:1 2 3 4 5 6 7 8 9 10

d3.json

2 个答案:

答案 0 :(得分:2)

从代码中可以看出,您要插入std::deque而不是std::list(您已经将数组值插入到列表l1中)。您可以按照相同的步骤插入std::deque

int main(void) {
    int tab[] = { 1,2,3,4,5,6,7,8,9,10 };
    std::list<int> l1(tab, tab + 10);
    std::deque<int> d1(tab, tab + 10);
}

我只是将A替换为int,因为前者看起来只是int的包装。

或者你可以这样做,

int main(void) {
    int tab[] = { 1,2,3,4,5,6,7,8,9,10 };
    std::list<int> l1(tab, tab + 10);
    std::deque<int> d1;

    auto it = d1.begin();
    d1.insert(it, l1.begin(), l1.end());
}

答案 1 :(得分:1)

另一种方法是使用std::copy

#include <algorithm>
#include <iterator>
//...
std::copy(l1.begin(), l1.end(), std::back_inserter(d1));

您的代码还有其他问题需要纠正:

1)删除空的A拷贝构造函数。通过将其设为空,您可以创建不会复制A成员的a份副本。

2)A构造函数的参数应该与成员变量的名称不同。

See the Live Example