【问题标题】:How to insert an element to alist in a vector of lists in C++?如何将元素插入到 C++ 中列表向量中的列表中?
【发布时间】:2021-09-08 04:42:07
【问题描述】:

我正在尝试创建一个列表向量,然后将一个元素插入到向量中的特定列表中。 这就是我想要做的

vector<list<int>> depth_lists;
depth_lists[0].push_back(1);

它失败了一些很长的退出代码......我在这里做错了什么?我想我可能不得不在向列表向量中插入元素之前以某种方式初始化每个列表,但是向量的构造函数不是为我做的吗?

【问题讨论】:

  • vector&lt;list&lt;int&gt;&gt; depth_lists; 定义了一个 vector,其中没有任何元素。这意味着没有depth_lists[0]push_back 进入。 vector&lt;list&lt;int&gt;&gt; depth_lists(10); 将构成一个 vector 和 10 个 lists。更改 10 以满足您的需要。如果您不知道自己的需求,可以将push_back 加入vector,就像在vector 中使用lists 一样
  • 关于非常长的退出代码的旁注。取数字并将其转换为十六进制。它们通常更容易识别,并且可以通过网络搜索轻松查找。有时,十六进制版本拼出的单词实际上可以告诉您出了什么问题。好吧,不是 DEADBEEF,我们不是在给奶牛编程,但是当你看到类似的东西时,你可以很确定该程序正在试图告诉你一些重要的事情。
  • @user4581301 请把它变成答案。
  • 这个问题每周被问几次。我正在寻找副本。

标签: c++ list vector constructor


【解决方案1】:

如果你想添加一个列表,你可以使用std::listconstructor,它接受一个计数和一个值,而只是emplace it to the backstd::vector

std::vector<std::list<int>> depth_lists;
depth_lists.emplace_back(1ul,1);

【讨论】:

    【解决方案2】:

    你创建了一个空向量

    vector<list<int>> depth_lists;
    

    所以你不能使用下标运算符

    depth_lists[0].push_back(1);
    

    你可以这样写

     depth_lists.push_back( { 1 } );
    

    这是一个演示程序。

    #include <iostream>
    #include <vector>
    #include <list>
    
    int main() 
    {
        std::vector<std::list<int>> v;
        
        v.push_back( { 1 } );
        
        v[0].push_back( 2 );
        
        for ( const auto &lst : v )
        {
            for ( const auto &item : lst )
            {
                std::cout << item << ' ';
            }
            std::cout << '\n';
        }
        
        return 0;
    }
    

    程序输出是

    1 2 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 2018-06-28
      • 2019-11-30
      • 2023-04-06
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多