用向量的向量元素初始化向量的空向量

我有一个函数,该函数将使用来自字符串类型的向量的给定向量中的某些元素来初始化字符串类型的向量的空向量。我的语法看起来像这样

std::vector<std::vector<std::string>> extract_data_on_userid(const std::vector<std::vector<std::string>> &array, std::vector<std::string> &user_ids, const int nr_of_events)
{
  std::vector<std::vector<std::string>> data_extract;
  int event_iterator = 0;
  int user_id_iterator = 0;

  // While loops which extracts the events based on user IDs
  while (event_iterator <= nr_of_events)
  {
    // While loop which finds specified user id in an event
    while (user_id_iterator < array[0].size())
    {
      if (check_id(user_ids, array[0][user_id_iterator]))
      {
        for (size_t i = 0; i < array.size(); i++)
        {
          data_extract[i].push_back(array[i][user_id_iterator]);
        }
      }
      user_id_iterator++;
    }

    event_iterator++;
  }

  return data_extract;
}

给定的向量由可变数量的字符串向量(至少2个)组成。我的方法应在中搜索某些UserID

check_id(user_ids, array[0][user_id_iterator])

然后将所有1D向量的相关事件(user_id_iterator)推送到新的2D向量中

vector[i:in][user_id_iterator]

进入新启动的向量

std::vector<std::vector<std::string>> data_extract;

在for循环中。

 for (size_t i = 0; i < array.size(); i++)
    {
      data_extract[i].push_back(array[i][user_id_iterator]);
    }

一切都会按预期进行,直到将[user_id_iterator]行中的vector [i:in]的元素推入空向量中。

我是否必须初始化2D Vector data_extract中的所有1D矢量?填充向量的空向量的正确语法是什么? 我收到异常(分段错误),因为未正确初始化空向量。

评论