stack vector array 三种方式实现字符的反向输出

3 篇文章 0 订阅
//============================================================================
// Name        : Jhomeworkc++.cpp
// Author      : frank
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <stack>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
class Grade{
public:
	void GetWords(Grade *grade,string words);
	//void GradeLtr(Grade *grade,char ltr);
	void printGradeStack(Grade *grade);
	void printGradeVector(Grade *grade);
	void printGradeArray(Grade *grade);
public:
	string words;
};
void Grade :: GetWords(Grade *grade,string words){
   grade -> words = words;

}
// 1 array 方式
void Grade :: printGradeArray(Grade *grade){
	//unsigned int i = string :: length(grade->words);
	const char *str =grade->words.c_str();//c_str 是c++ 中 string类 (class) 的 函数,它能把 string类 的对象里的字符串 转换成 C 中 char 型变量 的 字符串
	int len = grade->words.length();
	cout << "array: ";
	for(int i = len -1;i >=0;i--){
		cout << str[i];
	}
	cout << endl;
}
// 2 以下是通过 vector 向量获得,是通过迭代器实现的反向输出
void Grade :: printGradeVector(Grade *grade){
	const char *str =grade->words.c_str();//c_str 是c++ 中 string类 (class) 的 函数,它能把 string类 的对象里的字符串 转换成 C 中 char 型变量 的 字符串
	int len = grade->words.length();
	vector<char> colorvect(str, str+len);//创建了字符型向量
	vector<char>::iterator it;//迭代器主要负责从容器中获取一个对像 容器的迭代器 it
	reverse(colorvect.begin(), colorvect.end());
	cout <<  "Vector: ";
	for(it=colorvect.begin(); it!=colorvect.end();++it)
	  {
		cout << *it;
	  }
	cout << endl;
}
// 3 以下是通过栈的方式,栈是一种后进先出的数据结构,因此不用反向
void Grade :: printGradeStack(Grade *grade){
	const char *str =grade->words.c_str();//c_str 是c++ 中 string类 (class) 的 函数,它能把 string类 的对象里的字符串 转换成 C 中 char 型变量 的 字符串
	int len = grade->words.length();
	stack <char> st;
	int j = 0;
	while (len --){
		st.push(str[j++]);
	}
	cout << "stack: ";
	while(!st.empty()){
		cout << st.top();
		st.pop();
	}
	cout << endl;
}
int main() {
	Grade g1;
	cout << "Input one words " << endl;
	cin >> g1.words;
	g1.GetWords(&g1,g1.words);
	g1.printGradeArray(&g1);
	g1.printGradeVector(&g1);
	g1.printGradeStack(&g1);

	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Frank范

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值