すみません、↓に記載の内容と全く関係ないところでミスをしていました。
sidesというvectorに値が入っていなかったため、side[0] - 1で落ちていました。
vecの各要素はサイズ0のvector<int>で初期化したいのですが、どのように初期化すれば良いのでしょうか?
以下のようなコードを書くと、push_backでsegmentation faultが発生してしまいます。
調べたところ、vec[0]にメモリ領域が割り当てられていないのが原因のようです。
C++
1vector<vector<int>> vec(2, vector<int>()); 2vec[0].push_back[1];
実際に書いたコード(一部)は以下のようなものです
C++
1#include <bits/stdc++.h> 2using namespace std; 3 4int main() { 5 std::cin.tie(nullptr); 6 std::ios::sync_with_stdio(false); 7 int numVtxes, numQs; 8 cin >> numVtxes >> numQs; 9 int numSides = numVtxes - 1; 10 11 /* 12 slidesは以下のような二次元配列(行列)です 13 1 2 14 1 3 15 */ 16 vector<vector<int>> sides(numSides, vector<int>(2)); 17 /* 18 adjListは二次元vector(行列)です。 19 初期化時には空のvectorをnumVtxes個設定したいです。 20 */ 21 vector<vector<int>> adjList(numVtxes, vector<int>()); 22 vector<int> vec; 23 for (auto& side : sides) { 24 auto test = adjList[side[0] - 1]; 25 //このpush_backでsegmentation_fault発生します。 26 adjList[side[0] - 1].push_back(1); 27 adjList[side[1] - 1].push_back(1); 28 } 29 30 return 0; 31}
回答1件
あなたの回答
tips
プレビュー