2012-10-03 4 views
-3

STL을 처음 사용하고 슬라이스에 직면 해 있습니다. 나는 slistalist를 가지고 있습니다. 나는이 문자열에서 "Version"이라고 가정하는 문자열의 마지막 항목을 제거해야합니다. 어떻게 할 수 있습니까?slist에서 문자열을 제거하는 방법

+0

이 슬라 이스는 string 유형입니다. – Addtoc

+0

[무엇을 시도 했습니까?] (http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+0

시도한 내용은 무엇입니까? 공식 문서로 해결할 수없는 문제는 무엇입니까? –

답변

1

std::slist<T>의 경우 반복자가 가리키는 요소는 직접 지울 수 없습니다. 대신 앞에있는 요소를 찾아야합니다.

void erase_value(T const& value, std::slist<T>& l) { 
    auto it = std::adjacent_find(l.begin(), l.end(), 
     [=](T const&, T const& v) { 
      return v == value; 
     }); 
    if (it != l.end()) { 
     l.erase_after(it); 
    } 
} 

이전에 발견 요소를 remebering, 당신이 발견을 유지하는 데 필요한 마지막 요소를 제거하고 바로 지난 발견 요소를 제거하려면 : 나는 std::adjacent_find()를 사용하고 술어의 첫 번째 인수를 무시합니다 삭제하는 최초의 요소를 찾으려면 . 즉, 첫 번째 요소를 찾은 다음 잠재적으로 더 많은 요소가 있지만 계속 찾아야합니다.

관련 문제