逆序存储小文件(一)——使用STL容器

BJFU数据结构 基于顺序存储结构的图书信息表的逆序存储 描述 定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后将读入的图书信息逆序存储,逐行输出逆序存储后每本图书的信息。 输入 输入n+1行,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。 输出 总计n行,第i行是原有图书表中第n-i+1行的图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格 阅读详情

将一个4M左右的文本文件内容逆序输出到另一个文本文件中,步骤如下:

1.使用文件输入流以只读方式打开源文件,创建一个容器,使用copy函数将流内容顺序复制到容器中;

2.创建一个文件输出流,制定输出目标,反向遍历容器,将容器内容写到流中。

 

代码如下:

#include <deque>
#include <vector>
#include <list>
#include <iostream>
#include <ctime>
#include <memory>
#include <fstream>
#include <iterator>
using namespace std;

template<typename T, template<typename U, typename=allocator<U>> class seq>
void ReverseStoreFile(const char* pSrcFile, const char* pDestFile)
{
	if(!pSrcFile || !pDestFile) return;
	
	time_t tBegin = time(0);
	
	seq<T> seqCh;

	ifstream in(pSrcFile, ios::in);
	copy(istream_iterator<char>(in), istream_iterator<char>(), back_inserter(seqCh));

	ofstream out(pDestFile, ios::out);
	copy(seqCh.rbegin(), seqCh.rend(), ostream_iterator<char>(out));
	
	time_t tEnd = time(0);
	cout<<typeid(seqCh).name()<<" time="<<tEnd - tBegin<<endl;
}

int main()
{
	ReverseStoreFile<char, std::deque>("in.txt", "deque_out.txt");

	ReverseStoreFile<char, std::vector>("in.txt", "vector_out.txt");

	ReverseStoreFile<char, std::list>("in.txt", "list_out.txt");
	return 0;
}


输出结果如下:

输出结果如下:

该方法存在性能问题,不适合操作大文件,而且不支持中文(iostream以字节为单位操作)

LLM大模型-vLLM本地部署全流程:Windows WSL2环境安装、HuggingFace与Modelscope模型加载与本地运行、Docker化部署与镜像分发 vLLM本地部署大模型方案 vLLM是一款高性能大模型推理引擎,通过PagedAttention技术显著提升吞吐量和内存效率,支持低成本、高并发的本地部署。 核心优势: 性能卓越:吞吐量远超同类方案,支持连续批处理等高级功能 成本优化:减少GPU服务器需求 兼容性强:提供类OpenAI的简洁API 部署步骤: 硬件准备:需NVIDIA GPU(如A100/3090),显存≥模型参数量×2(7B模型需14GB) 软件环境: Linux系统或Windows WSL2 安装CUDA 12.1+和Python 3. 阅读详情

相关推荐

智能工厂四大系统协同实战:ERP/PLM/MES/WMS集成架构与数据流解析

本文深入解析了智能工厂中ERP、PLM、MES、WMS四大核心系统的协同集成架构与数据流。通过实战案例,阐述了如何打通系统孤岛,实现从产品设计、资源计划、生产执行到仓储物流的数据无缝流转,从而构建高效、敏捷的智能工厂运营体系。

ujm567890的博客 674

递归算法实现字符串的逆序存储

#include #include char s[100]; int len; void reverse(int i,int j) { if(i==len/2) return ; char temp; temp=s[i]; s[i]=s[j]; s[j]=temp; reverse(++i,--j); } int main() { scanf("%s",s); len=st

有梦的博客 2869

国产麒麟系统中的PaddleOCR离线绿色部署:高效安全的文字识别新纪元

摘要:本文详细介绍了PaddleOCR在银河麒麟V10SP1系统上的离线部署方案。通过Conda虚拟环境隔离依赖,采用离线包安装方式实现无网络部署,支持80+语言识别。重点讲解了模型量化剪枝优化、多线程处理等性能调优技巧,并提供了完整的OCR识别代码示例。该方案具有数据本地化处理的安全优势,适用于医疗票据数字化等对隐私要求严格的场景,同时解决了模型加载失败、内存不足等常见问题。

墨夶的博客 1227

栈的逆序和递归

一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底围1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数实现,不能用其他数据结构。 import java.util.Stack; public class Main { public static void reverse(Stack stack) { if (stack

FromMeToMyself的博客 1733

DeepSeek-OCR又更新:一起看下OCR1和OCR2

DeepSeek-AI 最近又又开源了,这次是DeepSeek-OCR2,结合之前发布的DeepSeek-OCR ,可以发现DeepSeek走出了一条不同于主流 OCR 方案的技术路线。第一代模型探索了**“视觉作为文本压缩介质”的可行性,打破了传统的序列长度限制;第二代模型则通过“Visual Causal Flow(视觉因果流)”**架构,将因果推理引入视觉编码器,解决了复杂排版下的阅读顺序难题。本文将从架构设计、逻辑结构、训练范式及工程实现四个维度,深度剖析这两代模型的异同与创新。

kakaZhui的博客 623

避坑指南:Python模拟抖音扫码登录时,那些你可能会遇到的‘Referer’和‘Token’校验问题

本文深入解析Python模拟抖音扫码登录时常见的Referer校验与Token失效问题,提供五大陷阱的解决方案。从动态fp参数生成到Referer校验策略,再到Token生命周期管理,手把手教你破解抖音登录接口的反爬机制,助力开发者高效完成自动化登录。

weixin_42573113的博客 780

用栈实现逆序输出键盘输入

#include"stdlib.h"#include"stdio.h"typedef char StackEntry;typedef struct node { //链栈的结点结构StackEntry item; //栈的数据元素类型struct node *next; //指向后继结点的指针}NODE; typedef struct stack{NODE *top;}STACK; //

把握自己。 5188

【立创EDA-PCB设计基础】1.嘉立创EDA专业版软件安装+PCB基本概念+原理图绘制

本文详解PCB基本概念以及实现MCU最小系统原理图的绘制(原理图包括MCU芯片GD32F103C8T6、外部晶振、输出端口、USB输入口、5v转3v3稳压输出、复位按键、唤醒按键、LED)及嘉立创EDA专业版软件安装。为本专栏【立创EDA-PCB设计基础】后面章节实现PCB绘制做准备。

嵌入式阿齐Archie 3万+

C++STL容器总结

持续更新中!!! 各大容器的特点: 1.可以用下标访问的容器有(既可以插入也可以赋值):vector、deque、map; 特别要注意一下,vector和deque如果没有预先指定大小,是不能用下标法插入元素的...

-_- 8万+

第95章 安全工程师:Shell 脚本实现安全扫描、漏洞检测、日志审计

随着网络安全威胁日益复杂,传统的手动安全管理已无法满足现代企业的安全需求。Shell 脚本为安全工程师提供了强大的自动化能力,能够实现 7×24 小时的安全监控、快速漏洞扫描、智能日志分析和实时威胁响应。本章将系统介绍如何使用 Shell 脚本构建完整的安全防护体系,从基线检查到实时监控,帮助你打造自动化的安全运维能力。

猪猪侠 90

Java 实现 MP3 音频合并工具类:摆脱 FFmpeg,高效低 CPU 的纯本地方案【需求已解决】

本方案充分发挥了 Java 音频 SPI 的潜力,实现了轻量、跨平台、低 CPU 消耗的 MP3 音频合并工具类。 对于希望在服务器或桌面应用中集成音频处理功能的开发者而言,这无疑是一个可行且优雅的解决方案。

一键难忘的博客 543

史上最全STL常用容器及其底层存储结构总结

各大容器的特点: 可以用下标访问的容器有(既可以插入也可以赋值):vector、deque、map; 特别要注意一下,vector和deque如果没有预先指定大小,是不能用下标法插入元素的! 序列式容器才可以在容器初始化的时候制定大小,关联式容器不行; 注意,关联容器的迭代器不支持it+n操作,仅支持it++操作。 序列式容器 vector 当需要使用数组的情况下,可以考虑使用vector 特点: (1) 一个动态分配的数组(当数组空间内存不足时,都会执行: 分配新空间-复制元素-释放原空间

yyjshang的博客 5755

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

详解C++STL容器系列(一)—— vector的详细用法和底层原理

目录一、介绍二、vector的创建和方法创建vector方法三、vector的具体用法3.1 遍历vector3.1.1 迭代器访问3.1.2 下标访问3.1.3 范围for循环3.2 vector 容量和大小3.3 vector 常用算法3.3.1 push_back、pop_back 和 emplace_back3.3.2 insert 和 emplace3.3.3 erase3.3.4 assign3.3.5 swap 和 clear3.4 vector二维操作定义访问resize操作四、vector

aruewds的博客 5万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C++ STL容器 —— string 用法详解

STL容器——string函数用法详解 写在前面:近期正在重新学习C++的STL容器,因此准备用一些大白话将STL函数的用法详细记录一下,主要介绍一些基本函数是怎么用的,并不涉及原理。写的不好或者理解的有问题, 请见谅. 下面说的 “运行之后” 表示: 运行上个语句之后的结果. 一行如果说的太长的话, 就得拖动下面的进度条才能看到后面的内容 因此将一段话分成了多行,就像现在这种形式 需要头文件...

Ember_Sky 9599

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

STL-容器

STL 容器是对象的集合。 容器可以分为以下四类 1、近容器 2、顺序容器 3、容器适配器 4、关联容器 容器类 近容器 int a[ ] ,string 顺序容器 vector/list/deque 容器适配器 stack/queue 关联容器 set/multiset/map/multimap 1、近容器:string 头文件#include string s("sshdk"); string s1(s);//初始化(1) string s2(s1.begin(),s1

weixin_48560325的博客 2373

C++STL——顺序容器

参考《C++ prime》第五版

m0_63997099的博客 2354

C++ STL之set详解

C++ STL之set详解,介绍set的方法及特性

行码棋 4万+

C++STL容器详解——list

list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代

未知陨落的博客 1631

C++ STL容器 常用操作大全

C++ STL容器 序列容器 顺序容器的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定。包含:(forword_list,list,queue,priority_queue,stack,deque,vector,array(虽然他被归为序列容器,但是并不满足序列的所以要求!))。 序列的要求 X a(n,t) //声明一个名为a的有n个t组成的序列 X(n,t) //匿名序列(这里我们不做过多的解释) X a(i,j) //声明一个名为a的序列,并且初始化[i,j) 的内容 X

Super_jun的博客 1427

【STL三】序列容器——array容器

array 容器是 C++ 11 标准中新增的序列容器。

junxuezheng的博客 1861

浅析STL三大组件,容器 算法 迭代器。

迭代器是容器与算法之间的胶合剂,所有STL容器都附带有自己专属的迭代器,只有容器的设计者才知道如何遍历自己的元素。所以说,我们想遍历某一个容器,就必须使用这个容器的迭代器才可以。...

qq_51004011的博客 1216

【语法回顾】C++STL:容器(一)

【语法回顾】C++STL:容器(一) 【语法回顾】C++STL:容器(一) - ATP_ - 博客园【语法回顾】C++STL:容器(一) 2012-07-12 12:05 by ATP_, 968 阅读, 0 评论, 收藏, 编辑 一.顺序容器的定义 ...

176

C++STL容器系列(二)vector的详细用法和底层原理

详细介绍了C++Stl中的vector的使用和各类方法及底层原理和实现

You build it, you run it 1873

蓝桥杯C/C++5天逆袭省一之第二天——C++STL容器(基础版)

/ 定义一个存储 int 类型的空 vector//定义一个存储int类型且长度为100的vector动态数组,与int a[100]等价使用// 定义一个存储 int 类型且初始大小为 5 的 vector,每个元素初始值为 0// 通过初始化列表初始化 vector//复制一个与v4一样的动态数组v5//如果要得到v4的逆序数组,用反向迭代器//是将 v7 初始化为一个二维向量,该向量有 n 行 m 列,且所有元素初始值都为 0。//与int a[n][m]等价使用。

SUN19326410095的博客 1278
上一篇: 两种获取虚函数地址的方式
下一篇: 逆序存储文件(二)——使用c标准库函数fopen,fseek,fread,fwrite
sunchenxian017
博客等级 码龄16年 2粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值