C++의 목록에 단어를 추가 할 때 단어를 정렬하려고합니다. 목록을 사용해야하며 "sort()"함수를 사용할 수 없습니다.List (C++)에 요소를 추가 할 때 요소를 어떻게 정렬합니까?
일부 단어가 포함 된 텍스트 파일이 있습니다 (각 단어는 줄 바꿈에 있음).
은 지금까지 나는 단어를 수집하고 목록에 추가하는 방법을 알아 낸 :
fstream myfile(fileName);
if(!myfile) { // Test if file open
cout<<"Error opening file"<< endl;
return false;
}
while (getline(myfile, line)){ //loops through and gets sayings
l.push_back(line);
}
단어는 단지 그들이 파일에있는 순서대로 추가됩니다. 내가하고 싶은 일은 단어의 첫 글자를 확인한 다음 목록의 끝에 추가하는 대신 목록의 적절한 위치에 넣는 것입니다.
미리 감사드립니다.
대한 추가 정보 :
나는이 작업을 수행하는 반복자를 사용하는 가정하고 생각합니다.
for (list<string>::iterator it=l.begin(); it != l.end(); ++it)
cout << *it << endl;
가 어떻게 내가 그들을 추가하기 전에 값을 비교하는 사용합니다 :
나는 목록을 표시하는 반복자를 사용하는 방법을 알아? (*it)[0]
을 사용하여 이터레이터를 사용하여 단어의 첫 번째 글자를 가져 오려고했지만 올바른 구문이 아닙니다.
'std :: multiset' (또는'std :: set')을 사용할 수 있습니까? 아니면 할 수없는 일입니까? – krzaq
* 내가하고 싶은 것은 단어의 첫 글자를 확인한 다음 목록의 적절한 위치에 두는 것입니다. * "정렬"로 간주되는 첫 글자 만 확인하는 방법은 무엇입니까? – PaulMcKenzie
* 목록을 사용해야하며 "sort()"함수를 사용할 수 없습니다. * -'std :: list' ['sort()'함수와 함께 제공됩니다] (http://en.cppreference.com/w/cpp/container/list/sort). 이미'std :: list'를 사용하고 있다면 왜 그것을 사용할 수 없습니까? 나는 선생님들이 준 정말 미친 요구 사항을 보았습니다. 그러나 이것은 내가 들어 본 가장 미친 시험 중 하나입니다. – PaulMcKenzie