最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

C++ reverse()函数用法详解(深入了解,一文学会)

互联网 admin 1浏览 0评论

C++ reverse()函数用法详解(深入了解,一文学会)

reverse_copy() 算法可以将源序列复制到目的序列中,目的序列中的元素是逆序的。定义源序列的前两个迭代器参数必须是双向迭代器。目的序列由第三个参数指定,它是目的序列的开始迭代器,也是一个输出迭代器。如果序列是重叠的,函数的行为是未定义的。这个算法会返回一个输出迭代器,它指向目的序列最后一个元素的下一个位置。

本文作者原创,转载请附上文章出处与本文链接。

C++ reverse()函数用法详解(深入了解,一文学会)目录

1 reverse

1.1 反转Vector容器

 1.2 反转string

1.3 翻转字符数组

1.4 反转数组

2 reverse_copy()


1 reverse

1.1 反转Vector容器


#include <iostream>
#include <vector>using namespace std;
int main()
{vector<int> a;for (int i = 0; i < 10; i++){a.push_back(i);}cout << "翻转前: " << "\n";for (int i = 0; i < 10; i++){cout << a[i];}reverse(a.begin(), a.end());cout << "\n" << "翻转后: " << "\n";for (int i = 0; i < 10; i++){cout << a[i];}
}

 1.2 反转string

#include <iostream>
#include <vector>using namespace std;
int main()
{string s = "abcdefg";cout << "翻转前: " << "\n";cout << s;reverse(s.begin(), s.end());cout << "\n" << "翻转后: " << "\n";cout << s;}

1.3 翻转字符数组

#include <iostream>
#include <vector>using namespace std;
int main()
{char s[] = "abcdefg";int N = sizeof(s) / sizeof(s[0]);cout << "翻转前: " << "\n";cout << s;reverse(s, s + N - 1);cout << "\n" << "翻转后: " << "\n";cout << s;}

1.4 反转数组


#include <iostream>
#include <vector>using namespace std;
int main()
{int s[] = { 1,2,3,4,5,6,7,8,9 };cout << "翻转前: " << "\n";for (int i = 0; i < sizeof(s) / sizeof(s[0]); i++)cout << s[i] << " ";//输出9 8 7 6 5 4 3 2 1reverse(s, s + 9);cout << "\n" << "翻转后: " << "\n";for (int i = 0; i < sizeof(s) / sizeof(s[0]); i++)cout << s[i] << " ";//输出9 8 7 6 5 4 3 2 1}

2 reverse_copy()

        reverse_copy函数和reverse函数的唯一区别在于:reverse_copy会将结果拷贝到另外一个容器中,不影响原容器的内容。

    reverse_copy(sourceBeg,sourceEnd,destBeg)

    reverse_copy()会将源区间[sourceBeg,sourceEnd)内的元素复制到"以destBeg起始的目标区间",并在复制过程中颠倒安置次序;(注:原数组不变)

    这里只放了一个例子,其他例子也类似
 

// Testing for palindromes using reverse_copy()
#include <iostream>                                      // For standard streams
#include <iterator>                                      // For stream iterators and begin() and end()
#include <algorithm>                                     // For reverse_copy() and copy_if()
#include <cctype>                                        // For toupper() and isalpha()
#include <string>
using namespace std;
using std::string;
int main()
{string first, second;first = "123456789";second.resize(first.size());reverse_copy(first.begin(), first.end(), second.begin());cout << second << endl;}

C++ reverse()函数用法详解(深入了解,一文学会)

reverse_copy() 算法可以将源序列复制到目的序列中,目的序列中的元素是逆序的。定义源序列的前两个迭代器参数必须是双向迭代器。目的序列由第三个参数指定,它是目的序列的开始迭代器,也是一个输出迭代器。如果序列是重叠的,函数的行为是未定义的。这个算法会返回一个输出迭代器,它指向目的序列最后一个元素的下一个位置。

本文作者原创,转载请附上文章出处与本文链接。

C++ reverse()函数用法详解(深入了解,一文学会)目录

1 reverse

1.1 反转Vector容器

 1.2 反转string

1.3 翻转字符数组

1.4 反转数组

2 reverse_copy()


1 reverse

1.1 反转Vector容器


#include <iostream>
#include <vector>using namespace std;
int main()
{vector<int> a;for (int i = 0; i < 10; i++){a.push_back(i);}cout << "翻转前: " << "\n";for (int i = 0; i < 10; i++){cout << a[i];}reverse(a.begin(), a.end());cout << "\n" << "翻转后: " << "\n";for (int i = 0; i < 10; i++){cout << a[i];}
}

 1.2 反转string

#include <iostream>
#include <vector>using namespace std;
int main()
{string s = "abcdefg";cout << "翻转前: " << "\n";cout << s;reverse(s.begin(), s.end());cout << "\n" << "翻转后: " << "\n";cout << s;}

1.3 翻转字符数组

#include <iostream>
#include <vector>using namespace std;
int main()
{char s[] = "abcdefg";int N = sizeof(s) / sizeof(s[0]);cout << "翻转前: " << "\n";cout << s;reverse(s, s + N - 1);cout << "\n" << "翻转后: " << "\n";cout << s;}

1.4 反转数组


#include <iostream>
#include <vector>using namespace std;
int main()
{int s[] = { 1,2,3,4,5,6,7,8,9 };cout << "翻转前: " << "\n";for (int i = 0; i < sizeof(s) / sizeof(s[0]); i++)cout << s[i] << " ";//输出9 8 7 6 5 4 3 2 1reverse(s, s + 9);cout << "\n" << "翻转后: " << "\n";for (int i = 0; i < sizeof(s) / sizeof(s[0]); i++)cout << s[i] << " ";//输出9 8 7 6 5 4 3 2 1}

2 reverse_copy()

        reverse_copy函数和reverse函数的唯一区别在于:reverse_copy会将结果拷贝到另外一个容器中,不影响原容器的内容。

    reverse_copy(sourceBeg,sourceEnd,destBeg)

    reverse_copy()会将源区间[sourceBeg,sourceEnd)内的元素复制到"以destBeg起始的目标区间",并在复制过程中颠倒安置次序;(注:原数组不变)

    这里只放了一个例子,其他例子也类似
 

// Testing for palindromes using reverse_copy()
#include <iostream>                                      // For standard streams
#include <iterator>                                      // For stream iterators and begin() and end()
#include <algorithm>                                     // For reverse_copy() and copy_if()
#include <cctype>                                        // For toupper() and isalpha()
#include <string>
using namespace std;
using std::string;
int main()
{string first, second;first = "123456789";second.resize(first.size());reverse_copy(first.begin(), first.end(), second.begin());cout << second << endl;}

发布评论

评论列表 (0)

  1. 暂无评论