由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - C++ Q66: reverse a string -- is it efficient
相关主题
相关话题的讨论汇总
话题: string话题: char话题: p2话题: str话题: p1
进入JobHunting版参与讨论
1 (共1页)
c**********e
发帖数: 2007
1
我写的下面的程序是不是很不efficient?
#include
#include
#include
using namespace std;
int main(){
string input = string("reverse_this_string");
int n=input.size();
const char* c_str=new char[n+1];
c_str=input.c_str();
char* c_str2=new char[n+1];
for(int i=0;i cout << string(c_str2) << endl;
return 0;
}
t*****j
发帖数: 1105
2
char c_str[] = "Reverse_this_String";
char* p1, char* p2;
p1 = p2 = c_str;
while (*p2 != ‘\0’)
{
p2++;
}
p2--;
char c;
while (p1 {
c = *p1;
*p1 = *p2;
*p2 = c;
p1++;
p2--;
}

【在 c**********e 的大作中提到】
: 我写的下面的程序是不是很不efficient?
: #include
: #include
: #include
: using namespace std;
: int main(){
: string input = string("reverse_this_string");
: int n=input.size();
: const char* c_str=new char[n+1];
: c_str=input.c_str();

t*****j
发帖数: 1105
3
char c_str[] = "Reverse_this_String";
char* p1, char* p2;
p1 = p2 = c_str;
while (*p2 != ‘\0’)
{
p2++;
}
p2--;
char c;
while (p1 {
c = *p1;
*p1 = *p2;
*p2 = c;
p1++;
p2--;
}

【在 c**********e 的大作中提到】
: 我写的下面的程序是不是很不efficient?
: #include
: #include
: #include
: using namespace std;
: int main(){
: string input = string("reverse_this_string");
: int n=input.size();
: const char* c_str=new char[n+1];
: c_str=input.c_str();

c**********e
发帖数: 2007
4
谢谢。你儿子很可爱。

【在 t*****j 的大作中提到】
: char c_str[] = "Reverse_this_String";
: char* p1, char* p2;
: p1 = p2 = c_str;
: while (*p2 != ‘\0’)
: {
: p2++;
: }
: p2--;
: char c;
: while (p1
t*****j
发帖数: 1105
5
嘿嘿,我最爱听这句话了~~

谢谢。你儿子很可爱。

【在 c**********e 的大作中提到】
: 谢谢。你儿子很可爱。
m*****n
发帖数: 2152
6
#include
#include
using namespace std;
int main(){
string input("reverse_this_string");
string::iterator it_first = input.begin();
string::iterator it_last = input.end()-1;
while(it_first < it_last)
swap(*it_first++, *it_last--);
return 0;
}

【在 c**********e 的大作中提到】
: 我写的下面的程序是不是很不efficient?
: #include
: #include
: #include
: using namespace std;
: int main(){
: string input = string("reverse_this_string");
: int n=input.size();
: const char* c_str=new char[n+1];
: c_str=input.c_str();

c**********e
发帖数: 2007
7
Your solution looks nice, but I got the following error:
Error: Could not find a match for std::swap Allocator>(char, char) needed.
Any solution?

【在 m*****n 的大作中提到】
: #include
: #include
: using namespace std;
: int main(){
: string input("reverse_this_string");
: string::iterator it_first = input.begin();
: string::iterator it_last = input.end()-1;
: while(it_first < it_last)
: swap(*it_first++, *it_last--);
: return 0;

M********5
发帖数: 715
8
这个idea其实也没什么难的,只是接口看起来很简单了,因为stl帮它实现了功能
这个错误其实你应该看得懂的,如果你了解c++的高级特性的话
这个提到了两个知识点,一个是traits,一个Allocator
你可以试试swap
具体的语法不记得了,查一查stl的手册就清楚了

std::

【在 c**********e 的大作中提到】
: Your solution looks nice, but I got the following error:
: Error: Could not find a match for std::swap: Allocator>(char, char) needed.
: Any solution?

p********7
发帖数: 549
9
一般不用string,都用的char
1 (共1页)
进入JobHunting版参与讨论
相关主题
相关话题的讨论汇总
话题: string话题: char话题: p2话题: str话题: p1