2012-10-10 3 views
0

개요 : 각 문자열의 마지막 문자를 찾기 위해 문자열 (이름) 목록을 반복하는 코드가 있습니다. 또한 값 유형으로 구조체를 사용하는 myGraph typedef 맵이 있습니다. 구조체는 벡터 노드와 벡터 next_cnt를 포함합니다.벡터를 값 유형으로 사용하여지도에 값을 추가하는 방법은 무엇입니까?

해야 할 일 : 새로운 문자가지도에 삽입 될 때마다 벡터 nextwt_vec를 빈 벡터로 초기화해야합니다.

문제점 : 아래 코드를 사용하면 myweek_wc는 이전 문자의 이전 값을 유지합니다.

map<char, vector<int> > nextmap; 


for (myGraph::const_iterator j = graph.begin(); j != graph.end(); ++j) 
{ 
    vector<int> nextwt_vec; 
    //populating next map with char and weighted ints 
    for (int p=0; p< (int) (*j).second->nodenext.size(); ++p) 
    { 

     char cn = name[name.length() - 1]; 

     int wt = (*j).second->next_cnt[p]; 

     nextwt_vec.insert(nextwt_vec.begin()+p, wt); 

     //puts char as key and weighted int as value in nextmap 
     n->nextmap[cn] = nextwt_vec; 

    } 

출력 : 내가 무엇을 얻을 :

char: A vec: 109 
char: C vec: 109 vec: 48 

출력 내가 가야한다 : 당신의 도움에 대한

char: A vec: 109 
char: C vec: 48 

감사합니다!

+1

이동 선언'벡터 nextwt_vec 을,'* 내부 *은'for' 루프. –

+0

나는 그것을 얻지 않는다. 텍스트를 어디에서 출력합니까? 'char : C vec : 109 vec : 48 '은 무엇을 의미합니까? – sehe

+0

@KerrekSB 할 때 세그먼트 오류가 발생합니다 : 11 오류 – snazziii

답변

0

드롭 벡터 nextwt_vec; 함수에서 변수. nextmap [cn]으로 직접 작업하십시오. 이 두 줄을 바꾸기 :이와

nextwt_vec.insert(nextwt_vec.begin()+p, wt); 

    //puts char as key and weighted int as value in nextmap 
    n->nextmap[cn] = nextwt_vec; 

:

//puts char as key and weighted int as value in nextmap 
    n->nextmap[cn].insert(nextwt_vec.begin()+p, wt);; 
+0

이 작업을 수행했지만 세그먼트 오류가 발생했습니다 : 11 오류 – snazziii

관련 문제