使用iostream iterator

这篇具有很好参考价值的文章主要介绍了使用iostream iterator。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#include<iostream>
#include<iterator>
#include<algorithm>
#include<vector>
#include<string>

using namespace std;
int main(){
istream_iterator<string> is(cin);
istream_iterator<string> eof;

vector<string> text;
copy(is,eof,back_inserter(text));

sort(text.begin(),text.end());

ostream_iterator<string> os(cout," ");
copy(text.begin(),text.end(),os);
}

这个代码,神了,我找了好久类似的,也用gpt跑了,根本跑不出来,只会让人无限输入,写啥也不返回

于是找了个int的

#include<iostream>
#include<iterator>
#include<algorithm>
#include<vector>
#include<string>

using namespace std;

int main() {
std::vector<int> numbers;

// 从标准输入流中读取数据,并将其添加到vector中
std::istream_iterator<int> inputIterator(std::cin);
std::istream_iterator<int> endIterator;
std::copy(inputIterator, endIterator, std::back_inserter(numbers));
sort(numbers.begin(), numbers.end());
// 打印vector中的数据
std::ostream_iterator<int> outputIterator(std::cout, " ");
std::copy(numbers.begin(), numbers.end(), outputIterator);

return 0;
}
//这个程序应

使用iostream iterator,50,算法

如图所示,直接打一组数字也出不来,必须后面加个非类型的(非int)的值,才能异常输出,这是我一个疑惑的地方,为什么要这么输出呢??

然后我想是不是代码有问题

修改了以下第一个代码,将string 改为Int,其他原封不动

#include<iostream>
#include<iterator>
#include<algorithm>
#include<vector>
#include<string>

using namespace std;
int main(){
istream_iterator<int> is(cin);
istream_iterator<int> eof;

vector<int> text;
copy(is,eof,back_inserter(text));

sort(text.begin(),text.end());

ostream_iterator<int> os(cout," ");
copy(text.begin(),text.end(),os);
}

使用iostream iterator,50,算法

如图所示,必须输一个非类型才能打出来

我混乱了,难道必须要输入异常才能返回吗

思考之后,用gpt输入回车程序结束,用c++语言表示

#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
#include <string>

int main() {
    std::vector<std::string> text;

    while (true) {
        std::string input;
        std::getline(std::cin, input);

        // 检查输入是否为空(用户按下回车键)
        if (input.empty()) {
            break;
        }

        text.push_back(input);
    }

    // 对字符串进行排序
    std::sort(text.begin(), text.end());

    // 打印排序后的字符串
    for (const auto& str : text) {
        std::cout << str << " ";
    }

    return 0;
}

使用iostream iterator,50,算法

输出结果后发现,其并不需要输入非类型,但是也不排序

使用iostream iterator,50,算法

输入数字也不排,混合输入也不排(经过实验)        然后我想这代码可能是错的,并没有输出排序后的功能

#include <iostream>
#include <algorithm>
#include <string>

int main() {
    // 输入字符串
    std::cout << "Enter a string: ";
    std::string input;
    std::getline(std::cin, input);

    // 对字符串进行排序
    std::sort(input.begin(), input.end());

    // 输出排序后的字符串,用空格隔开
    std::cout << "Sorted string: ";
    for (char c : input) {
        std::cout << c << ' ';
    }
    std::cout << std::endl;

    return 0;
}

思考从字符串入手,找到了一个排序字符串,按空格输出的代码,觉得很好

#include <iostream>
#include <algorithm>
#include <string>

int main() {
    // 输入字符串
    std::cout << "Enter a string: ";
    std::string input;
    std::getline(std::cin, input);

    // 对字符串进行排序
    std::sort(input.begin(), input.end());

    // 输出排序后的字符串,用空格隔开
    std::cout << "Sorted string: ";
    for (char c : input) {
        std::cout << c << ' ';
    }
    std::cout << std::endl;

    return 0;
}

使用iostream iterator,50,算法

但这个输出的是单个字符,于是加以修改

#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    // 存储字符串
    std::vector<std::string> fruits;
 while (true) {
        std::cout << "Enter a fruit (or enter an empty string to finish): ";
        std::string input;
        std::getline(std::cin, input);

        // 检查输入是否为空,如果是则退出循环
        if (input.empty()) {
            break;
        }

        // 将输入的字符串添加到向量中
        fruits.push_back(input);
    }

	
    // 对字符串进行排序
    std::sort(fruits.begin(), fruits.end());

    // 输出排序后的字符串
    std::cout << "Sorted fruits: ";
    for (const auto& fruit : fruits) {
        std::cout << fruit << " ";
    }
    std::cout << std::endl;

    return 0;
}

使用iostream iterator,50,算法

(加入两个gpt出来的思考过程)

如果您想对字符串 "apple", "banana", "orange", 和 "cherry" 进行排序,可以将它们存储在一个 std::vector<std::string> 中,然后使用 std::sort 进行排序。以下是相应的C++代码: 

 

#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    // 存储字符串
    std::vector<std::string> fruits = {"apple", "banana", "orange", "cherry"};

    // 对字符串进行排序
    std::sort(fruits.begin(), fruits.end());

    // 输出排序后的字符串
    std::cout << "Sorted fruits: ";
    for (const auto& fruit : fruits) {
        std::cout << fruit << " ";
    }
    std::cout << std::endl;

    return 0;
}

这个程序首先将字符串存储在 std::vector<std::string> 中,然后使用 std::sort 对向量进行排序,最后输出排序后的结果。在这个例子中,输出应该是 "apple banana cherry orange"。请注意,上述程序假设您要按照字典序对这些水果进行排序。如果您想按照其他方式排序(例如,按照字符串的长度),您可以在调用 std::sort 时提供一个比较函数。例如,按照字符串长度降序排序的示例:

#include <iostream>
#include <algorithm>
#include <vector>

// 自定义比较函数,按照字符串长度降序排序
bool compareByLength(const std::string& a, const std::string& b) {
    return a.length() > b.length();
}

int main() {
    // 存储字符串
    std::vector<std::string> fruits = {"apple", "banana", "orange", "cherry"};

    // 对字符串按照长度降序进行排序
    std::sort(fruits.begin(), fruits.end(), compareByLength);

    // 输出排序后的字符串
    std::cout << "Sorted fruits by length: ";
    for (const auto& fruit : fruits) {
        std::cout << fruit << " ";
    }
    std::cout << std::endl;

    return 0;
}

结果如下: 

使用iostream iterator,50,算法

依然又回到第一个函数了,按照上面思路修改,依然报错

使用iostream iterator,50,算法 可能是迭代器没有empty类型的原因,那么想用回车将其输出的可能性就pass了。

iostream iterator代码

#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
#include <string>

int main() {
    // 从输入流中读取字符串,直到遇到空字符串
    std::cout << "Enter fruits (enter an empty string to finish): ";
    std::istream_iterator<std::string> inputIterator(std::cin);
    std::istream_iterator<std::string> endIterator;
    std::vector<std::string> fruits(inputIterator, endIterator);

    // 对字符串进行排序
    std::sort(fruits.begin(), fruits.end());

    // 输出排序后的字符串到输出流
    std::cout << "Sorted fruits: ";
    std::ostream_iterator<std::string> outputIterator(std::cout, " ");
    std::copy(fruits.begin(), fruits.end(), outputIterator);
    std::cout << std::endl;

    return 0;
}

使用iostream iterator,50,算法

如图所示,毫无反应,我开始还想这会不会是string独有特性,但前面也用string顺利排序了,可以成功。但这个将Int修改再输入异常值就可以跳出,string我试不出来异常值。估计这是 iostream iterator的string的独有特性文章来源地址https://www.toymoban.com/news/detail-817026.html

到了这里,关于使用iostream iterator的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从零学算法50

    50 .实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x = 2.00000, n = 10 输出:1024.00000 示例 2: 输入:x = 2.10000, n = 3 输出:9.26100 示例 3: 输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25 还真没我想的那么简单,这题可以学一下快速幂,我就直

    2024年02月07日
    浏览(28)
  • 50.【算法图解】

    二分查找目的是为了能够快速的遍历数据,然后能够得到我们想要的数据.查找的次数最多为:log2的n次方;相比原来的数据要减少很多复杂度. 切记使用二分查找的前提是这个数据是有序的不能乱序,乱序就完蛋. 就是使目标值和中间值进行判断,假如说中间值大于目标值,那

    2024年02月21日
    浏览(21)
  • Resnet50算法原理

    假设你现在是个人工智能知识小白,如果让你设计一个可以识别图片的神经网络,你会怎么做? 我之前问过自己这个问题,思来想去,我的答案是:我可能不知道如何下手。 突然有一天,当我把Resnet50这个网络中的所有算法都写了一遍之后,我突然发现,只要我深入了解了这

    2024年02月04日
    浏览(31)
  • 经典算法50例-无敌五十剑-算法五十重天

    大家好,欢迎阅读我的博客。本文将介绍50道经典的算法题目,这些题目都是程序员面试中常见的考察点,也是提高算法能力的重要途径。通过解答这些问题,我们可以巩固基础知识,锻炼思维能力和编码实战技巧。希望本文能够对大家提供帮助,让我们一起来挑战这些有趣

    2023年04月10日
    浏览(21)
  • 长文解析Resnet50的算法原理

    从打算写图像识别系列文章开始已经快2个月了,目前写了有9篇文章,几乎涵盖了Renset50这一CNN网络95%的算法。 今天整理了下,修复一些笔误和表述错误,整理成了pdf, 同时本文也是整理汇总版。 这篇文章算是偏专业性的深度科普文,将Resnet50这一神经网络(为什么叫这个名字

    2024年02月06日
    浏览(26)
  • 【Java杂谈】Iterator(迭代器)的使用

    迭代器是Java提供的一种访问集合的方法,Iterator 是 Java 迭代器最简单的实现,常用来访问ArrayList、HashMap等类的对象。 Iterator是一个接口,ListIterator是Collection API中的接口,它扩展了Iterator接口: 可以使用iterator() 方法: hasNext()方法的作用是没有遍历完成 next()方法有两个作用

    2024年02月10日
    浏览(40)
  • 引入头文件#include <iostream>的时候发生了什么?

    cin extern istream cin; The object controls extractions from the standard input as a byte stream. Once the object is constructed, the call cin.tie() returns cout. cout extern ostream cout; The object controls insertions to the standard output as a byte stream. /@@/ 帮助文档 ios_base::fmtflags typedef T1 fmtflags; static const fmtflags boolalpha, dec, fix

    2024年02月16日
    浏览(28)
  • 【LeetCode算法系列题解】第46~50题

    【题目描述】 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以按 任意顺序 返回答案。 【示例1】 【示例2】 【示例3】 【提示】 1 ≤ n u m s . l e n g t h ≤ 6 1le nums.lengthle 6 1 ≤ n u m s . l e n g t h ≤ 6 − 10 ≤ n u m s [ i ] ≤ 10 -10le nums[i]le 10 − 10 ≤ n u

    2024年02月10日
    浏览(26)
  • CNN(七):ResNeXt-50算法的思考

     🍨 本文为 🔗365天深度学习训练营 中的学习记录博客 🍖 原作者: K同学啊|接辅导、项目定制          在进行ResNeXt-50实战练习时,我也跟其他学员一样有这个疑惑,如下图所示:          反复查看代码,仍然有些疑惑,甚至怀疑是不是代码错了。实践是检验真理

    2024年02月09日
    浏览(27)
  • 面试算法50:向下的路径节点值之和

    给定一棵二叉树和一个值sum,求二叉树中节点值之和等于sum的路径的数目。路径的定义为二叉树中顺着指向子节点的指针向下移动所经过的节点,但不一定从根节点开始,也不一定到叶节点结束。例如,在如图8.5所示中的二叉树中有两条路径的节点值之和等于8,其中,第1条

    2024年02月05日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包