int main()
{
string s;
vector<char> cvec(5, 'c');
s.assign(cvec.begin(), cvec.end());
//s(cvec.begin(), cvec.end()); 这种情况下报错,要用assign
cout << s << endl;
return 0;
}
int main()
{
vector<char> cvec(5, 'c');
//string s.assign(cvec.begin(), cvec.end()); 直接构造string下用assign报错
string s(cvec.begin(), cvec.end());
cout << s << endl;
return 0;
}
解释:assign,本质是赋值运算符,不能在构造对象时使用
作用:它将右边运算对象中所有的元素拷贝到左边运算对象中,赋值类型可以不同但要相容,如vector转string。
作用范围:仅顺序容器
以string对象用法为例:
//把字符串s赋给当前字符串
string &operator=(const string &s);
//用c类型字符串s赋值
string &assign(const char *s);
//用c字符串s开始的n个字符赋值
string &assign(const char *s,int n);
//把字符串s赋给当前字符串
string &assign(const string &s);
//用n个字符c赋值给当前字符串
string &assign(int n,char c);
//把字符串s中从start开始的n个字符赋给当前字符串
string &assign(const string &s,int start,int n);
//把first和last迭代器之间的部分赋给字符串
string &assign(const_iterator first,const_itertor last);