【问题标题】:Segmentation Fault in vector<vector<string>>vector<vector<string>> 中的分段错误
【发布时间】:2021-08-14 22:31:58
【问题描述】:

为什么我在这段代码中遇到分段错误?

#include<bits/stdc++.h>
using namespace std;


int main()
{
    vector<vector<string> > v;
    v[0].push_back("good");
    
    cout<<v[0][0];

}

我试图在第一个向量中插入字符串“good”,我试图通过v[0][0] 访问它,但它给了我segmentation fault。请帮忙。谢谢。

【问题讨论】:

  • 你的向量是空的。 v[0] 不存在。
  • 强制避免使用using namespace std; (why) 并且不要使用#include&lt;bits/stdc++.h&gt; (why) 评论。分开它们是不好的,但是当你把它们放在一起时,它们会放大彼此的最坏影响,并将程序变成一个未使用标识符的雷区。

标签: c++ vector segmentation-fault


【解决方案1】:

内部向量从 0 个元素开始,您推送 1 个元素,然后您可以通过 [0] 访问第一个元素。没关系。

但是,外部向量的工作方式相同:您首先需要添加一个元素才能访问它。

要么调用让你指定大小的构造函数:

vector<vector<string> > v(1);
v[0].push_back("good");

或推送元素:

vector<vector<string> > v;
vector<string> w;
w.push_back("good");
v.push_back(w);

【讨论】:

  • 谢谢... :) 但是为什么最大的素数是 463035818? XD
猜你喜欢
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2020-12-03
  • 2014-05-16
  • 2011-02-13
相关资源
最近更新 更多