首页 > 其他分享 >实验6 模板类、文件IO和异常处理

实验6 模板类、文件IO和异常处理

时间:2023-12-17 22:55:41浏览次数:28  
标签:index template int Vector 实验 IO ptr 模板 size

实验任务4

#pragma once

#include<iostream>
#include<stdexcept>

using namespace std;

template<typename T>
class Vector {
public:
    Vector(int n);
    Vector(int n, T value);
    Vector(const Vector<T> &vi);
    ~Vector();
    
    int get_size() const {return size;}
    T& at(int index);
    T& operator[](int index);
    
    template<typename T1>
    friend void output(const Vector<T1> &v);
    
private:
    int size;
    T *ptr;
};

template<typename T> 
Vector<T>::Vector(int n): size{n} {
    if(n < 0)
      throw length_error("Vector constructor:negative size");
    ptr = new T[size];  
}

template<typename T> 
Vector<T>::Vector(int n, T value): size{n} {
    if(n < 0)
      throw length_error("Vector constructor:negative size");
    
    ptr = new T[size];
    for(auto i = 0; i < size; ++i)
      ptr[i] = value;      
}

template<typename T> 
Vector<T>::Vector(const Vector<T> &vi): size{vi.size}, ptr{new T[size]}
{
    for(auto i = 0; i < size; ++i)
      ptr[i] = vi.ptr[i]; 
}

template<typename T> 
Vector<T>::~Vector() {
    delete[] ptr;
}

template<typename T> 
T& Vector<T>::at(int index) {
    if(index < 0 || index >= size)
      throw out_of_range("Vector Index out of range");
    return ptr[index];
}

template<typename T> 
T& Vector<T>::operator[](int index) {
    if(index < 0 || index >= size)
      throw out_of_range("Vector index out of range");
    return ptr[index]; 
}

template<typename T1>
void output(const Vector<T1> &v) {
    for(auto i = 0; i < v.get_size(); ++i)
       cout << v.ptr[i] << ", ";
    cout << "\b\b \n";
}
Vector.hpp
#include <iostream>
#include "Vector.hpp"

void test() {
    using namespace std;

    int n;
    cin >> n;
    
    Vector<double> x1(n);
    for(auto i = 0; i < n; ++i)
        x1.at(i) = i * 0.7;

    output(x1);

    Vector<int> x2(n, 42);
    Vector<int> x3(x2);

    output(x2);
    output(x3);

    x2.at(0) = 77;
    output(x2);

    x3[0] = 999;
    output(x3);
}

int main() {
    test();
}
task4.cpp

 

实验任务5

#include <fstream>
#include <iomanip>

void output(std::ostream &out) {
    out << std::setw(4) << 'a';
    for (char i = 'b'; i <= 'z'; i++) {
        out << std::setw(2) << i;
    }
    out << std::endl;
    
    int n = 26;
    char start_letter = 'A';

    for (int i = 1; i <= n; i++) {
        out << std::setw(2) << i << " ";
        for (int j = 0; j < n; j++) {
            char letter = start_letter + (i + j) % n;
            out << letter << " ";
        }
        out << std::endl;
    }
}

int main() {
    output(std::cout);
    std::cout << std::endl;

    std::ofstream out;
    out.open("cipher_key.txt");
    if (!out.is_open()) {
       std::cout << "fail to open file " << "cipher_key.txt" << std::endl;
    } 
    output(out);
    out.close();
    return 0;
}
task5.cpp

 

标签:index,template,int,Vector,实验,IO,ptr,模板,size
From: https://www.cnblogs.com/Lucky-19/p/17895727.html

相关文章

  • 实验六、模板类,文件I/O流,异常处理
    实验四:Vector.hpp://#pragmaonce#include<iostream>#include<stdexcept>usingnamespacestd;template<typenameT>classVector{private:T*data;intsize;public:Vector(intsz=0,constT&value=T());V......
  • 4.1-华三-irf中的bfd mad实验配置
    1.BFDMad概述用途:核心层的irf,最好做MAD检测,来确保网络的稳定性。BFD:BidirectionalForwardingDetection(双向转发检测)。1.是一种网络协议,用于快速检测和报告两个网络节点之间的连接状态。主要目标是提供低延迟、高可靠性的链路故障检测,以便网络设备可以快速做出响应并进行故障恢复......
  • 实验6
    实验41#include<stdio.h>2#include<string.h>3#defineN104typedefstruct{5charisbn[20];//isbn号6charname[80];//书名7charauthor[80];//作者8doublesales_price;//售价9intsales_count;//销售册数10}......
  • 实验六 模板类,文件io和异常处理
    实验任务4#pragmaonce#include<iostream>#include<stdexcept>usingstd::cout;usingstd::endl;template<typenameT>classVector{public://构造函数,默认大小为0Vector(intn=0):size(n),data(newT[n]){if(n<0)......
  • Pandas数据分析实战(Pandas in action)第2章 Series 对象
    Pandas数据分析实战第2章SeriesSeries是Pandas的核心数据结构之一,是一个用于同构数据的一维标记数组。Series可以设置索引,没有设置的话,Pandas会设置默认的索引,从0开始的线性索引。创建一个Series对象importpandasaspdpd.Series()Series([],dtype:objec......
  • 实验6
    1.实验任务41#include<iostream>2#include<stdexcept>34template<typenameT>5classVector{6private:7T*data;8size_tsize;9public:10Vector(size_tn):size(n){11data=newT[size];12......
  • POLIR-Management-TYPES of decisions{Structured(routine+familiar)Problems: Progra
    Inaverysimplesense,theproblemsmanagersencountercanbeclassifiedas:routineandfamiliar;newandunusual.Inresponse,managerswilluseoneoftwodifferenttypesofdecisions:StructuredProblemsandProgrammedDecisions;UnstructuredP......
  • 实验6 模板类、文件I/O和异常处理
    实验任务4Vector.hpp#pragmaonce#include<iostream>#include<stdexcept>#include<string>usingnamespacestd;template<typenameT>classVector{public:Vector(intx=0,constT&value=T());Vector(constVecto......
  • Educational Codeforces Round 134 (Rated for Div. 2)
    基本情况AB秒了。C搞了一个错的二分答案,虽然过样例了。C.Min-MaxArrayTransformation错误分析没有进一步推导性质,而是觉得数据单调递增估计是二分,然后就无脑写,实际上check的正确性没有保证。boolcheck(intind,intnow){ if(ind==now)returntrue; if(b[ind]......
  • 实验6 模板类、文件I/O和异常处理
    Task4: vector.hpp:#include<iostream>#include<string>#include<stdexcept>usingnamespacestd;template<typenameT>classVector{private:T*data;intsize;public:Vector():data(nullptr),size(0){}Vector......