STL里用什么函数将string 反序?
时间:2011-12-12
来源:互联网
STL里用什么函数将string 反序?
作者: gucheng789 发布时间: 2011-12-12
std::string str;
std::reverse(str.begin(),str.end());
作者: mingliang1212 发布时间: 2011-12-12
s.assign(s.rbegin(),s.rend());
或者:
s.replace(s.begin(),s.end(),s.rbegin(),s.rend());
作者: thefirstz 发布时间: 2011-12-12
除了reverse,还可以
s.assign(s.rbegin(),s.rend());
或者:
s.replace(s.begin(),s.end(),s.rbegin(),s.rend());
不要这样啊。。。。
会出问题的。
作者: mingliang1212 发布时间: 2011-12-12
std::string str;
std::reverse(str.begin(),str.end());
包装一下
C/C++ code
inline void Reverse(std::string& str) // 反转string字符串 包装STL的reverse() 可以inline { reverse(str.begin(), str.end()); // STL 反转函数 reverse() 的实现 /* template <class BidirectionalIterator> * void reverse(BidirectionalIterator first, BidirectionalIterator last) * { * while ((first != last) && (first != --last)) * swap(*first++, *last); * } */ }
作者: hongwenjun 发布时间: 2011-12-12
楼上的兄台,不明白您的代码,为什么要这样包装,Reverse 函数里好像没做什么特殊处理把?、
作者: gucheng789 发布时间: 2011-12-12
引用 2 楼 thefirstz 的回复:
除了reverse,还可以
s.assign(s.rbegin(),s.rend());
或者:
s.replace(s.begin(),s.end(),s.rbegin(),s.rend());
不要这样啊。。。。
会出问题的。
什么问题?
作者: thefirstz 发布时间: 2011-12-12
{
reverse(str.begin(), str.end());
}
经过包装, Reverse(str); 就可以反序了, 比 reverse(str.begin(), str.end());
输入快捷
作者: hongwenjun 发布时间: 2011-12-12
就是家了一个inline标志,运行时快了一点,就为这个所以要包装??
作者: gucheng789 发布时间: 2011-12-12
引用 3 楼 mingliang1212 的回复:
引用 2 楼 thefirstz 的回复:
除了reverse,还可以
s.assign(s.rbegin(),s.rend());
或者:
s.replace(s.begin(),s.end(),s.rbegin(),s.rend());
不要这样啊。。。。
会出问题的。
什么问题?
前半段复制正常,但是后半段复制的是已经被修改的数据。
作者: mingliang1212 发布时间: 2011-12-12
前半段复制正常,但是后半段复制的是已经被修改的数据。
有源代码吗?
发一段我看看,好久不用STL忘记了
我用codeblocks试了下好像可以
作者: thefirstz 发布时间: 2011-12-12
template<class _BidIt> inline void _Reverse(_BidIt _First, _BidIt _Last, bidirectional_iterator_tag) { // reverse elements in [_First, _Last), bidirectional iterators for (; _First != _Last && _First != --_Last; ++_First) _STD iter_swap(_First, _Last); }
想不到我的vs2010里面竟然没有重载随机迭代器的reverse版本。。。算了。就这个吧将就着看吧。。。
作者: mingliang1212 发布时间: 2011-12-12
引用 9 楼 mingliang1212 的回复:
前半段复制正常,但是后半段复制的是已经被修改的数据。
有源代码吗?
发一段我看看,好久不用STL忘记了
我用codeblocks试了下好像可以
没想到啊没想到,string的实现竟然是这样的。。。。
C/C++ code
template<class _It> _Myt& _Replace(const_iterator _First, const_iterator _Last, _It _First2, _It _Last2, input_iterator_tag) { // replace [_First, _Last) with [_First2, _Last2), input iterators _Myt _Right(_First2, _Last2); replace(_First, _Last, _Right); return (*this); }
我想去查下标准。。。。
作者: mingliang1212 发布时间: 2011-12-12

作者: thefirstz 发布时间: 2011-12-12
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28