[华为机试练习题]57.对象管理器

简介:

题目

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

代码

/*---------------------------------------
*   日期:2015-07-05
*   作者:SJF0115
*   题目:对象管理器
*   来源:华为机试练习题
-----------------------------------------*/
#include <iostream>
#include "ObjMgt.h"
#include <vector>
using namespace std;

struct Object{
    unsigned int key1;
    unsigned int key2;
    unsigned int key3;
    Object(unsigned int a,unsigned int b,unsigned int c){
        key1 = a;
        key2 = b;
        key3 = c;
    }
    Object(){}
};

vector<Object> container;


/*------------------------------------------------------------------------------
功能:增加单个对象
输入:
key1  外部关键字 KEY1 
key2  外部关键字KEY2
key3  外部关键字KEY3
输出:无
返回: 
      -1 :失败(对象已经存在或者其它异常)
       0 :成功
-------------------------------------------------------------------------------*/
int AddObject (unsigned int key1, unsigned int key2, unsigned int key3){
    int isExits = IsObjectExist(key1,key2,key3);
    // 对象已经存在
    if(isExits){
        return -1;
    }//if
    Object o(key1,key2,key3);
    container.push_back(o);
    return 0;
}

/*-------------------------------------------------------------------------------
功能:删除一个或多个对象
输入:
      key1 外部关键字 KEY1 
      key2 外部关键字 KEY2
      key3 外部关键字 KEY3
输出:无
返回:无

说明:用例保证参数取值为合法值和通配符0xFFFFFFFF, 通配符表示0~65535范围内的任意值; 
      举例:key1=1,key2=2,key3= 0xFFFFFFFF,表示删除key1=1,key2=2的所有对象;
           key1,key2,key3取值全为0xFFFFFFFF时,表示删除所有对象。
-------------------------------------------------------------------------------*/
void DeleteObject (unsigned int key1, unsigned int key2, unsigned int key3){
    Object o;
    vector<Object>::iterator ite = container.begin();
    while(ite != container.end()){
        o = *ite;
        if((o.key1 == key1 || key1 == 0xFFFFFFFF) && (o.key2 == key2 || key2 == 0xFFFFFFFF) && (o.key3 == key3 || key3 == 0xFFFFFFFF)){
            ite = container.erase(ite);
        }//if
        else{
            ++ite;
        }//else
    }//while
    return ;
}

/*-----------------------------------------------------------------------------------
功能:查询单个对象是否存在
输入:
      key1 外部关键字 KEY1 
      key2 外部关键字 KEY2
      key3 外部关键字 KEY3
输出:无
返回:
      0:不存在
      1:存在
-----------------------------------------------------------------------------------*/
int IsObjectExist (unsigned int key1, unsigned int key2, unsigned int key3){
    int size = container.size();
    Object o;
    for(int i = 0;i < size;++i){
        o = container[i];
        if(o.key1 == key1 && o.key2 == key2 && o.key3 == key3){
            return 1;
        }//if
    }//for
    return 0;
}

/*----------------------------------------------------------------------------------
Description     清空所有对象
Prototype       void Clear();
Input Param     无
Output Param    无
Return Value    无

-----------------------------------------------------------------------------------*/
void Clear(void){
    container.clear();
    return;
}
目录
相关文章
|
存储 编译器 C语言
C语言关键字必备练习题
C语言关键字必备练习题
177 0
|
算法 Unix Shell
|
C++
C/C++练习题(三)
1、对下面两个文件编译后,运行会输出什么? // 第一个文件a.c #include extern char p[]; extern void f(); int main() { f(); printf("a.
744 0
|
C++ 编译器 数据安全/隐私保护
C/C++练习题(二)
1、下面这些指针分别代表什么? float(**p1)[10]; double*(*p2)[10]; double(*p3[10])(); int*((*p4)[10]); long(**p5)(int(*a)[]); p1是一个二维指针,它指向的一维指针又指向了一个数组,这个数组的类型是floa...
1011 0
|
Shell Perl
练习题 一下
1.1 第8题 输出test.txt文件内容时,不包含oldboy字符串的命令 文件内容:   [root@znix ~]# cat /data/test.txt test liyao oldboy   1.1.1 方法一grep 使用grep命令,找什么就写什么 -v 参数是排除的意思   [root@znix ~]# grep -v "oldboy" /data/test.txt test liyao 1.1.2 方法二head 使用head显示文件前2行信息(-2参数是显示两行),默认显示前10行。
1233 0
华为机试练习题汇总
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/50458481 华为机试练习广场: [华为机试练习题]1.
2768 0