こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

vectorの中にmap

vectorの中にmapを入れて
添字:ノードID
[どのノードから来たのか|それまでのコスト]
を表現しようと考えています.

#include<iostream>
#include<vector>
#include<map>
#include<list>

// MACROS
#define UNDEF -1

// PROTOTYPE DCLARE
void init_path(std::vector<std::map<char, int> >, int size);

int main(void) {

//source -> source node
//
//size -> the number of node
//
//path -> store path infomation
// ex:
// path[1]: 1 is node id
// char : from node id
// cost : how cost from source to here
//
//adj -> show adjacency list eace node

int source;
int size;
std::vector<std::map<char, int> > path;
std::vector<std::list<char> > adj;

size = 5;

std::cout << "before" << std::endl;
init_path(path, size);
std::cout << "after" << std::endl;


std::map<char, int>::iterator it;

for(int i = 0; i < size; i++) {

it = path[i].begin();
// std::cout << it->first << ":" << it->second << std::endl;
}

return 0;
}

void init_path(std::vector<std::map<char, int> > path, int size) {

std::map<char, int> init;

init.insert( std::map<char, int>::value_type('-', UNDEF) );

for(int i = 0; i < size ; i++) {

path.push_back(init);
}

return;
}


*結果
before
after
Segmentation fault

となり初期化をする所までは正常に動いたっぽいのですが
どこが悪いのかわかりません(おそらくイテレータあたりかと思うのですが・・・・

具体的にどうしたらいいのか分からないのでご指導ねがいます.

投稿日時 - 2009-05-10 02:37:09

QNo.4945935

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

具体的に何をどうしたいのか分からないのですが、

int source;
int size = 5;
std::vector<std::map<char, int> > path(size);
std::vector<std::list<char> > adj;

//size = 5;

std::cout << "before" << std::endl;
init_path(path, size);
std::cout << "after" << std::endl;


std::map<char, int>::iterator it;

for(int i = 0; i < size; i++) {

it = path[i].begin();
std::cout << it->first << ":" << it->second << std::endl;
}

とすると、いちおう結果が出ます。

before
after
:0
:0
:0
:0
:0

投稿日時 - 2009-05-10 15:58:23

ANo.1

void init_path(std::vector<std::map<char, int> > path, int size) {
が、
void init_path(std::vector<std::map<char, int> >& path, int size) {
の間違いでは。(初期化してないじゃん)

投稿日時 - 2009-05-10 02:52:21