博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++基础--字符串倒序输出
阅读量:5335 次
发布时间:2019-06-15

本文共 2995 字,大约阅读时间需要 9 分钟。

(一)用基本的数组实现

#include "stdafx.h"#include 
#include
int main() { char ch1[10] = "abcde", ch2[10] = { 0}; int n=0, i=0, j=0; n = strlen(ch1); for(i = n-1; i>=0; i--) { ch2[j] = ch1[i]; j++; } printf("%s\n%s\n", ch1, ch2); return 0; }

 (二)加入向量vector, vector是具有方向的矢量容器,使用时,需include <vector>

#include "stdafx.h"#include 
#include
using namespace std; #include
int main(){ char ch1[10] = "abcde", ch2[10] = {
0}; int n=0, i=0, j=0; n = strlen(ch1); vector
cVec(ch1, ch1+n); for(i = cVec.size()-1; i>=0; i--) { ch2[j] = ch1[i]; j++; } printf("%s\n%s\n", ch1, ch2); return 0;}

(三)加入迭代器(iterator), iterator是一中检查容器内元素并遍历元素的数据类型,每个容器都可以定义自己的迭代器。

使用迭代器,需include <iterator>

#include "stdafx.h"#include 
#include
using namespace std;#include
#include
int main(){ char ch1[10] = "abcde", ch2[10] = {
0}; int n=0, i=0, j=0; n = strlen(ch1); vector
cVec(ch1, ch1+n); vector
::reverse_iterator cRIter; for(cRIter=cVec.rbegin(); cRIter!=cVec.rend(); cRIter++) { ch2[j] = *cRIter;//同时也可更改*cRIter为cRIter[0]; j++; } printf("%s\n%s\n", ch1, ch2); return 0;}

(四)使用双向链表list,list可以被视为一个双向链表,每个元素都具有前后元素的链接

1. (同上为反向迭代器)

#include "stdafx.h"#include 
#include
using namespace std;#include
#include
int main(){ char ch1[10] = "abcde", ch2[10] = {
0}; int n=0, i=0, j=0; n = strlen(ch1); list
cList(ch1, ch1+n); list
::reverse_iterator cRIter; for(cRIter=cList.rbegin(); cRIter!=cList.rend(); cRIter++) { ch2[j] = *cRIter; j++; } printf("%s\n%s\n", ch1, ch2); return 0;}

(四)使用双向链表list,正向迭代器

#include "stdafx.h"#include 
#include
using namespace std;#include
#include
int main(){ char ch1[10] = "abcde", ch2[10] = {
0}; int n=0, i=0, j=0; n = strlen(ch1); list
cList(ch1, ch1+n); list
::iterator cIter = cList.end(); cIter--; for(cIter; cIter!=cList.begin();cIter--) { ch2[j] = *cIter; j++; } if(cIter==cList.begin()) { ch2[j] = *cIter; } printf("%s\n%s\n", ch1, ch2); return 0;}

以上所有输出结果为:

(五)使用双向链表list,iterator正向迭代器复制的例子;

#include "stdafx.h"#include 
#include
using namespace std;#include
#include
int main(){ char ch1[10] = "abcde", ch2[10] = {
0}; int n=0, i=0, j=0; n = strlen(ch1); list
cList(ch1, ch1+n); list
::iterator cIter; for(cIter=cList.begin(); cIter!=cList.end(); cIter++) { ch2[j] = *cIter; j++; } printf("%s\n%s\n", ch1, ch2); return 0;}

输出结果为:

 

转载于:https://www.cnblogs.com/anlia/p/5960508.html

你可能感兴趣的文章
255. Verify Preorder Sequence in Binary Search Tree
查看>>
01_1_准备ibatis环境
查看>>
windows中修改catalina.sh上传到linux执行报错This file is needed to run this program解决
查看>>
[fowarding]Ubuntu jsp平台使用JDBC来连接MySQL数据库
查看>>
函数式编程
查看>>
JavaScript中的BOM和DOM
查看>>
bzoj 1606: [Usaco2008 Dec]Hay For Sale 购买干草
查看>>
[转]AngularJS:何时应该使用Directive、Controller、Service?
查看>>
注册表操作
查看>>
360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
查看>>
Yii安装使用教程(转)
查看>>
读取省市区
查看>>
控制器View的生命周期及相关函数是什么?你在开发中是如何用的?
查看>>
Java四种引用包括强引用,软引用,弱引用,虚引用。
查看>>
spring注入Properties
查看>>
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
查看>>
【BZOJ-2295】我爱你啊 暴力
查看>>
【BZOJ-1055】玩具取名 区间DP
查看>>
Oracle安装配置—64位Win7安装配置64位Oracle
查看>>
Bit Twiddling Hacks
查看>>