首页 > 其他分享 >实验1 类和对象

实验1 类和对象

时间:2023-10-13 11:22:25浏览次数:32  
标签:begin end cout 对象 v2 v3 实验 obj

// 标准库string, vector, array基础用法

#include <iostream>
#include <string>
#include <vector>
#include <array>

// 函数模板
// 对满足特定条件的序列类型T对象,使用范围for输出
template<typename T>
void output1(const T &obj) {
    for(auto i: obj)
        std::cout << i << ", ";
    std::cout << "\b\b \n";
}

// 函数模板
// 对满足特定条件的序列类型T对象,使用迭代器输出
template<typename T>
void output2(const T &obj) {
    for(auto p = obj.begin(); p != obj.end(); ++p)
        std::cout << *p << ", ";
    std::cout << "\b\b \n";
}

// array模板类基础用法
void test_array() {
    using namespace std;

    array<int, 5> x1;   // 创建一个array对象,包含5个int元素,未初始化
    cout << "x1.size() = " << x1.size() << endl;  // 输出元素个数
    x1.fill(42);        // 把x1的所有元素都用42填充
    x1.at(0) = 999;     // 把下标为0的元素值修改为999
    x1[4] = -999;       // 把下表为4的元素值修改为-999
    cout << "x1: ";
    output1(x1);        // 调用模板函数output1输出x1
    cout << "x1: ";
    output2(x1);        // 调用模板函数output1输出x1

    array<int, 5> x2{x1};
    cout << boolalpha << (x1 == x2) << endl;
    x2.fill(22);
    cout << "x2: ";
    output1(x2);

    swap(x1, x2);   // 交换array对象x1, x2
    cout << "x1: ";
    output1(x1);
    cout << "x2: ";
    output1(x2);
}

// vector模板类基础用法
void test_vector() {
    using namespace std;

    vector<int> v1;
    cout << v1.size() << endl;      // 输出目前元素个数
    cout << v1.max_size() << endl;  // 输出元素个数之最大可能个数
    v1.push_back(55);               // 在v1末尾插入元素
    cout << "v1: ";
    output1(v1);

    vector<int> v2 {1, 0, 5, 2};
    v2.pop_back();                  // 从v2末尾弹出一个元素
    v2.erase(v2.begin());         // 删除v2.begin()位置的数据项
    v2.insert(v2.begin(), 999);     // 在v1.begin()之前的位置插入
    v2.insert(v2.end(), -999);      // 在v1.end()之前的位置插入
    cout << v2.size() << endl;
    cout << "v2: ";
    output2(v2);

    vector<int> v3(5, 42);         //创建vector对象,包含5个元素,每个元素值都是42
    cout << "v3: ";
    output1(v3);

    vector<int> v4(v3.begin(), v3.end()-2); // 创建vector对象,以v3对象的[v3.begin(), v3.end()-2)区间作为元素值
    cout << "v4: ";
    output1(v4);
}

// string类基础用法
void test_string() {
    using namespace std;

    string s1{"oop"};
    cout << s1.size() << endl;
    for(auto &i: s1)
        i -= 32;
    s1 += "2023";
    s1.append(", hello");
    cout << s1 << endl;
}

int main() {
    using namespace std;

    cout << "===========测试1: array模板类基础用法===========" << endl;
    test_array();

    cout << "\n===========测试2: vector模板类基础用法===========" << endl;
    test_vector();

    cout << "\n===========测试3: string类基础用法===========" << endl;
    test_string();
}

 

标签:begin,end,cout,对象,v2,v3,实验,obj
From: https://www.cnblogs.com/xuwenxuan2004/p/17761660.html

相关文章

  • vue el-select/el-cascader获取选中的对象label值
    1.el-select获取选中对象label值<el-form-itemlabel="车辆配置"prop="sales_name"><el-selectv-if="!showSaleNameInput"v-model="form.sales_name"clearableref="itemSelect"......
  • 5、SpringMVC之域对象共享数据
    5.1、域对象简介请求域(request):一次请求范围内有效会话域(session):一次会话范围内有效应用域(application):整个应用范围内有效5.2、环境搭建5.2.1、右击project创建新module5.2.2、选择maven5.2.3、设置module名称和路径5.2.4、module初始状态5.2.5、配置打包方......
  • 在java中将InputStream对象转换为File对象(不生成本地文件)
    importorg.apache.commons.io.IOUtils;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;publicclassStreamUtil{staticfinalStringPREFIX="stream2file";//前缀字符串定义文件名;必须至少三个字符......
  • 实验楼操作系统学习记录
    链接哈尔滨工业大学李治军老师操作系统课程实验楼配套实验课实验1熟悉实验环境课程说明主要平台和工具介绍实验环境的工作模式使用方法这一章节主要是一些对于课程以及实验楼环境的说明,没什么可说的实验2操作系统的引导评分标准实验提示实验2的第一个任务是完......
  • 实验报告
    一、总体思路利用Java,继承JFrame类实现图形用户页面框架及UI设计布局,继承了ActionListener接口实现按钮事件监听用户按钮输入结束后获取等号前的字符串,采用双栈法将中缀表达式转化为后缀表达式后计算后缀表达式(单独写出牛顿迭代法计算开方运算)结果并输出在文本框中二、UI设计......
  • C#学习笔记--面向对象三大特征
    C#核心面向对象--封装用程序来抽象现实世界,(万物皆对象)来编程实现功能。三大特性:封装、继承、多态。类与对象声明位置:namespace中样式:class类名{}命名:帕斯卡命名法(首字母大写)实例化对象:根据类来新建一个对象。Personp=newPerson();成员变量声明在类语句块中用来描述......
  • 面向对象测试
    1.下列说法正确的是(B)A、在类方法中可用this来调用本类的类方法B、在类方法中调用本类的类方法时可直接调用C、在类方法中只能调用本类中的类方法D、在类方法中绝对不能调用实例方法A,this是个局部变量,静态类方法中不存在,也没办法调用答案是:A、在类方法中可用this来调用本......
  • 【算法】游戏中的学习,使用c#面向对象特性控制游戏角色移动
    最近,小悦的生活像是一首繁忙的交响曲,每天忙得团团转,虽然她的日程安排得满满当当,但她并未感到充实。相反,她很少有时间陪伴家人,这让她感到有些遗憾。在周五的午后,小悦的哥哥突然打来电话,他的声音里充满了焦虑。“小悦,我有个事情想拜托你。”哥哥的声音传来。小悦不禁有些疑惑,哥哥......
  • 在JavaScript中,最高效的方法来深度克隆一个对象是什么?
    内容来自DOChttps://q.houxu6.top/?s=在JavaScript中,最高效的方法来深度克隆一个对象是什么?将JavaScript对象进行深度克隆的最有效方法是什么?我见过使用obj=eval(uneval(o));,但这是非标准的做法,仅被Firefox支持。我曾尝试过obj=JSON.parse(JSON.stringify(o));,但对效率......
  • 可实现加、减、乘、除、开平方的计算器软件的实验设计
    可实现加、减、乘、除、开平方的计算器软件的实验设计1、思路代码:#include<stdio.h>#include<math.h>//牛顿迭代法计算平方根doublesqrt_newton(doublex){doubleguess=x/2.0;//初始猜测值为x的一半doubledelta=0.000001;//误差范围while(fabs(guess*gues......