新しいユーザーはここにあります。 私はノードを持つネットワークを作成し、乱数を使ってノード間にエッジを作成するこのコードを書いています。グラフ全体をベクトルとして追跡します。各要素は、その要素がその近傍であるノードを表すベクトルです。次に深さ優先検索を使用して、グラフの別々の部分(私のカウント変数)であるコンポーネントの数を見つけます。次に、接続されているノードと隣接ノードの数をtxtファイルに出力します。コードはコンパイルしますが、コマンドプロンプトは私にエラーを与える:ベクトル:: _ M_range_checkベクトルが範囲外/範囲チェック
このアプリケーションは、ランタイムを要求しました:
のインスタンス投げた後、いわゆる「STDを:: out_of_range」何を() 終了しますそれを異常な方法で終了させる。 サポートにお問い合わせください...
です...どういう意味ですか、どうすれば修正できますか?
また、各コンポーネントにいくつのノードがあるのかを把握する必要があります。
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <vector>
using namespace std;
void gengraph(int v, float p, vector <vector <int> >& G);
void DFS(vector <vector <int> > G, int v, vector<int>& M);
int main()
{
int a = 1000;
float b = 0.004;
vector <vector <int> > G;
gengraph(a,b,G);
vector <int> M (1000);
int count = 0;
int i;
for (i = 0; i < a; i++)
{
if (M[i]==0)
{
DFS(G, i, M);
count += 1;
}
}
ofstream myfile;
myfile.open ("data.txt");
for (int l=0; l<1000; l++)
{
myfile << "v len(G[v])\n";
}
myfile.close();
}
void gengraph(int v, float p, vector <vector <int> >& G)
{
for (int i = 0; i<1000; i++)
{
for (int j = 0; j<1000; j++)
{
int y = rand();
bool Prob = (y <= p);
if (i == j)
continue;
else
{
if(Prob == true)
{
G.at(i).push_back (j);
G.at(j).push_back (i);
}
}
}
}
}
void DFS(vector <vector <int> >& G, int v, vector<int>& M)
{
M[v]=1;
for(unsigned int j = 0; j < G[v].size(); j++)
{
if (M[j]==0)
{
DFS(G, j, M);
}
}
}
ベクトル M(1000)を使用しようとしました。それは私に同じエラーを与えた。 Codeblocksでデバッガを動作させるにはどうすればよいですか? –
gdbがインストールされている場合は、次のようにプログラムを実行してください。 "gdb -args yourprogram your parameters" –
は、エラーがどのように発生し、どのように反復されるかを確認するために、デバッガなしでエラーメッセージが表示されない場合は、エラーを取得するのが難しい –