我是靠谱客的博主 聪明诺言,这篇文章主要介绍C++里面的算法reverse转置的使用以及STL中deque容器的转置使用示例,现在分享给大家,希望可以做个参考。

reverse是全局函数模板,不是一个类中的 成员函数。reverse的参数:一个是指向要操作的范围头指针,第二个参数是指向尾的指针。以下的示例程序分别使用reverse函数对数组data和容器vector<string> v1做了转置,其中需要注意的是reverse中的参数的不同。

STL中的deque中自带了转置的迭代器:

deque<int>::iterator it1 = find(deq.begin(), deq.end(), 3);//it1指向元素3
deque<int>::iterator it2 = find(deq.begin(), deq.end(), 8);//it2指向元素8

deque<int>::reverse_iterator rit1(it1);//根据迭代器it1取得反向迭代器rit1
deque<int>::reverse_iterator rit2(it2);

使用泛型函数方法for_each打印出容器中的内容。 

以下是reverse的使用和deque容器使用的一些简单示例: 

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <deque>
using namespace std;

void print(int data)
{
	cout << data << " ";
}

int main(int argc, char *argv[])
{
	int data[] = {1,2,3,4,5,6,7};

	cout << "data reverse before:";
	for (int i = 0; i < sizeof(data) / sizeof(int); i++)
	{
		cout << data[i] << " ";
	}
	cout << endl;
	reverse<int[]>(data, &data[7]);//对数组data中的元素进行转置
	cout << "data reverse after:";
	for (int i = 0; i < sizeof(data) / sizeof(int); i++)
	{
		cout << data[i] << " ";
	}
	cout << endl;

	vector<string> v1;
	vector<string>::iterator it;

	v1.push_back("banana");
	v1.push_back("aplle");
	v1.push_back("grape");
	v1.push_back("mangosteen");
	v1.push_back("mango");
	v1.push_back("orange");
	v1.push_back("pear");
	cout << "v1 reverse before:";
	for (it = v1.begin(); it != v1.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
	reverse<vector<string>::iterator>(v1.begin(), v1.end());//对容器v1中的元素进行转置
	cout << "v1 reverse after:";
	for (it = v1.begin(); it != v1.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;

	deque<int> deq;
	for (int i = 0; i < 10; i++)
	{
		deq.push_back(i);//将0-9放到容器deq中
	}
	deque<int>::iterator it1 = find(deq.begin(), deq.end(), 3);//it1指向元素3
	deque<int>::iterator it2 = find(deq.begin(), deq.end(), 8);//it2指向元素8

	cout << "print [3,8):";
	for_each(it1, it2, print);//将[it1,it2)中的元素按照print操作,这里是将每个元素打印出来
	cout << endl;

	deque<int>::reverse_iterator rit1(it1);//根据迭代器it1取得反向迭代器rit1
	deque<int>::reverse_iterator rit2(it2);
	cout << "print reverse [3,8):";
	for_each(rit1, rit2, print);//for_each泛型算法
	cout << endl;


	return 0;

}

 

最后

以上就是聪明诺言最近收集整理的关于C++里面的算法reverse转置的使用以及STL中deque容器的转置使用示例的全部内容,更多相关C++里面内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(97)

评论列表共有 0 条评论

立即
投稿
返回
顶部