파일에서 방향성 그래프 인접 목록을 읽으려고합니다. 각 노드의 맵에 연결된 노드의 벡터에 저장합니다. 다음은 노드 1에 연결된 노드에 대한 입력 라인의 예입니다.
1 37 79 164 155 32 87 39 113 15 18 78 175 140 200 4 160 97 191 100 91 20 69 198 196
성공적으로 컴파일되지만 실행 중에는 아래 표시된 루프에서 세그먼트 오류가 발생하는 다음 코드가 있습니다.
typedef map<int, vector<int> > adjList;
ifstream file;
file.open("kargerMinCut.txt", ifstream::in);
string line;
adjList al;
while(!file.eof())
{
getline(file, line);
stringstream buffer(line);
int num;
buffer >> num;
al.insert(make_pair(num, adjList::mapped_type()));
// the below loop causes segmentation fault
while (!buffer.eof())
{
buffer >> num;
al.end()->second.push_back(num);
}
}
저는 STL을 처음 사용하므로 분명한 것을 놓칠 수 있지만 도와주세요.
모든 stl 컨테이너에 대해 마지막 end
요소 뒤 의 한 요소에 대한 반복자를 반환합니다 . 따라서이 요소에 액세스해서는 안됩니다. 문제가있는 라인은 al.end()->second.push_back(num);
입니다. 를 사용 al->rbegin()
하여 마지막 유효한 요소에 액세스 할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다