[2018年4月27号]C++ primer 课后练习 第九章 顺序容器

 
 

9.41

int main() {
    vector<char > cVec = {'a','b','c','d'};
    
    string str(cVec.begin(),cVec.end());
    
    cout << str << endl;
    for (;;);
    return 0;
}

9.42

提前预分配至少100个元素大小给vector

9.43

void stringChangeIter(string& s, const string& oldVal, const string& newVal){
    for(string::iterator it = s.begin(); it != s.end(); ){
        string theCheckString(it, it+ oldVal.size());
        if(theCheckString == oldVal){
            it = s.erase(it,it+oldVal.size());
            it = s.insert(it,newVal.begin(),newVal.end());
            it += newVal.size();
        }else{
            it++;
        }
    }
}

9.44

void stringChangePos(string& s, const string& oldVal, const string& newVal) {
    for(size_t i = 0 ; i <s.size();){
        if((s.size() - i) < oldVal.size()){
            break;
        }
        string theCheckString(s,i,oldVal.size());
        if(theCheckString == oldVal){
            s.replace(i,oldVal.size(),newVal);
        }else{
            i++;
        }
    }
}

9.45

string& stringChangeAddPrefixAndSuffixIter(string& s, const string& prefix , const string& suffix){
    s.insert(s.begin(), prefix.begin(), prefix.end());
    s.append(suffix);
    return s;
}

9.46

string& stringChangeAddPrefixAndSuffixPos(string& s, const string& prefix, const string& suffix) {
    s.insert(0, prefix);
    s.insert(s.size(), suffix);
    return s;
}
9.47
int main() {
    
    string str("ab2c3d7R4E6");
    int pos = 0;
    while((pos = str.find_first_of("0123456789", pos)) != string::npos){
        cout << str[pos] << endl;
        ++pos;
    }
    pos = 0;
    while ((pos = str.find_first_not_of("0123456789", pos)) != string::npos) {
        cout << str[pos] << endl;
        ++pos;
    }

    for (;;);
    return 0;
}

9.48

猜测返回查询失败消息


结果为-1,猜测正确

9.49

string stringCheckForNotAscenderAndDescender(const string & str){
    string theStr(str);
    string ascender("df");
    string descender("pg");
    int pos = 0;
    while((pos = theStr.find_first_of(ascender)) != string::npos||
          (pos = theStr.find_first_of(descender)) != string::npos){
        theStr.erase(pos,1);
        ++pos;
    }
    return theStr;
}

猜你喜欢

转载自blog.csdn.net/qq_22478401/article/details/80102553
今日推荐