struct Converter
{
Converter(std::size_t value):
value_(value), i_(0)
{}
std::string operator() (const std::string& word)
{
return (value_ & (1 << i_++)) ?
word:
std::string(word.size(), ' ');
}
std::size_t value_;
std::size_t i_;
};
처럼 UnaryOperation의 구현을했습니다 그리고 내가
std::vector v;
// initialization of v
std::transform(v.begin(), v.end(),
std::back_inserter(result),
Converter(data));
내 질문처럼 사용하는 것은 내 가정, 그 알고리즘에 의존 할 수있다 'Converter :: i_'가 'v'의 요소 수에 해당하는 순서로 'Converter operator()'를 호출합니다.
주문에 의지 할 수 없거나 문제가 발생할 수있는 문제가 발생하지 않도록 stl과 같은 해결책을 제시 할 수 없으므로 표준을 인용하십시오.
감사합니다.
편집 :
내가 변환 알고리즘의 표준에 "아니오 부작용"요구 사항을 알고 있습니다. 동일한 표준의 펑터에 대해 정확히 "부작용"을 찾을 수 없습니다.
어쩌면이 작업을위한 훌륭한 솔루션이 있을까요?
사실 실제로 부작용에 대한 메모는 현재 초안에 나타나지 않습니다. 대신 알고리즘은 달리 명시하지 않는 한 함수 객체를 자유롭게 복사 할 수 있다고 말합니다. 그래서 "부작용"은 함수 객체의 멤버를 수정한다는 의미입니다. –