本文整理汇总了C++中StringVectorPtr::back方法的典型用法代码示例。如果您正苦于以下问题:C++ StringVectorPtr::back方法的具体用法?C++ StringVectorPtr::back怎么用?C++ StringVectorPtr::back使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StringVectorPtr
的用法示例。
在下文中一共展示了StringVectorPtr::back方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: newV
vector<vector<string> > findLadders0(string start, string end, unordered_set<string> &dict) {
dict.insert(start);
StringVectorQ q;
q.push_back( StringVectorPtr(new StringVector(1, start)) );
const int L = end.size();
StringVectorQ result;
StringSet visitedS = {start};
while( !q.empty() ) {
StringVectorPtr pv = q.front();
q.pop_front();
if( pv->size() > shortest )
continue;
string s = pv->back();
for(int i=0; i<L; ++i) {
string newStr = s;
char ch = s[i];
do {
ch++;
if( ch > 'z') ch = 'a';
if( ch == s[i]) break;
newStr[i] = ch;
if( newStr == end ) { // found it
StringVectorPtr newV(new StringVector(*pv));
newV->push_back(newStr);
result.push_back(newV);
if( newV->size() < shortest)
shortest = newV->size();
} if( dict.end() != dict.find(newStr) && std::find(pv->begin(), pv->end(), newStr) == pv->end() ) { // continue with next search
StringVectorPtr newV(new StringVector(*pv));
newV->push_back(newStr);
visitedS.insert(newStr);
q.push_back(newV);
}
}while(true);
}
}
struct Smaller{
int x;
Smaller(int a):x(a){}
bool operator()(StringVectorPtr& v) {
return v->size() < x;
}
};
StringVectorVector vv;
// std::copy_if(result.begin(), result.end(), std::back_inserter(vv), Smaller(shortest));
for(StringVectorQ::iterator it=result.begin(); it!=result.end(); ++it) {
if( (**it).size() <= shortest )
vv.push_back(std::move(**it));
}
return std::move(vv);
}