vc-使用VC++语言用数组实现集合怎么做?

问题描述

使用VC++语言用数组实现集合怎么做?

提示,定义一个数组,定义Add IndexOf GetLength三个函数。当数组容纳不下的时候,要求能够扩充数组。编写一个主程序调用如上功能,并且实现对数组的遍历。

解决方案

 #include <iostream>
using namespace std;

class List
{
private:
    int * arr;
    int length;
    int arrsize;
public:
    List()
    {
        arrsize = 10;
        arr = new int[arrsize];
    }
    void Add(int value)
    {
        if (length == arrsize)
        {
            int oldsize = arrsize;
            int * oldarr = arr;
            arrsize += 10;
            arr = new int[arrsize];
            memset(arr, 0, arrsize);
            memcpy_s(arr, arrsize * sizeof(int), oldarr, oldsize * sizeof(int));
            delete[](oldarr);
        }
        length++;
        arr[length - 1] = value;
    }
    int GetLength()
    {
        return length;
    }
    int IndexOf(int index)
    {
        return arr[index];
    }
};

int main(int argc, _TCHAR* argv[])
{
    List list = List();
    for (int i = 0; i < 35; i++)
    {
        list.Add(i);
    }
    for (int i = 0; i < list.GetLength(); i++)
        cout << list.IndexOf(i) << endl;
    return 0;
}

解决方案二:

容纳不下的时候,开辟一个新空间,比原来的要大,然后把原来数组里内容拷贝到新的空间里,然后释放掉原来的空间就可以了

时间: 2024-08-17 12:32:28

vc-使用VC++语言用数组实现集合怎么做?的相关文章

vc++-C语言结构数组的题,请大神看看错误出在哪里

问题描述 C语言结构数组的题,请大神看看错误出在哪里 #include struct sell { char dm[4]; char mc[10]; int dj; int sl; long int je; }sell[100]; void main() { int i,j,t; long int m; for(i=0;i scanf("%s,%s,%4d,%5d,%5dn",&sell[i]dm,&sell[i].mc,&sell[i].dj,&sel

vb.vc .c#.那种语言更好

问题描述 vb.vc.c#.那种语言更好 解决方案 解决方案二:asp.net是一个框架而C#是其中的动态编程语法,不过建议学C#,目前比较实用.您可以看看这里的视频,我个人觉得很不错,你可以选择看一个解决方案三:vbvc都是c#的child,c#是它们的parent解决方案四:VC不是语言,是开发工具.VB.NET和C#基本是一样的语言,但是C#有两点胜过VB,其一,C#编写相同的代码,需要输入的字符更少,因此更简洁.其二,C#是.NET的一等公民.我们比较下C#和C/C++,C/C++是大多

c语言 指针数组作为函数参数问题

问题描述 c语言 指针数组作为函数参数问题 #include<stdio.h> #include<stdlib.h> void init_rec(day_record *arr[],FILE *file) { char temp[80]; int index=0; while((fscanf(file,"%s",temp))!=EOF) { arr[index]=NULL; arr[index]=(day_record * )malloc(sizeof(day_

C语言柔性数组实例详解_C 语言

本文实例分析了C语言柔性数组的概念及用法,对于进一步学习C程序设计有一定的借鉴价值.分享给大家供大家参考.具体如下: 一般来说,结构中最后一个元素允许是未知大小的数组,这个数组就是柔性数组.但结构中的柔性数组前面必须至少一个其他成员,柔性数组成员允许结构中包含一个大小可变的数组,sizeof返回的这种结构大小不包括柔性数组的内存.包含柔数组成员的结构用malloc函数进行内存的动态分配,且分配的内存应该大于结构的大小以适应柔性数组的预期大小.柔性数组到底如何使用? 不完整类型 C和C++对于不完

浅议C语言中数组和指针的互操作

曾听好多朋友说,C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减. 当然了,这是无可非议的,但是C的高效性是其他语言无妨比拟的,所以我们有必要把握其中的精华与奥妙,也就有必要知道其中的基本的数据结构的比如数组,稍微有点深度的堆栈.列表.结构体等的操作和实现.指针也是C语言中的一个很优秀灵活的结构,对它的了解也是必不可少的. 我们一般都认为数组是一维的数据存储结构,因为二位数组或者说矩阵都可以看作是多个一维数组的组合结构,定义在其上的数据存储访问方式

c++-VC++与VC#的windows编程有区别吗??使用的类库一样吗??

问题描述 VC++与VC#的windows编程有区别吗??使用的类库一样吗?? VC++与VC#的windows编程有区别吗??使用的类库一样吗?? 比如这个里面的一些框架函数如Button等的使用相同吗? 解决方案 微软为C++做了一些扩展,搞出一种向下兼容C++,但是又有自己的语法以兼容.net的语言,叫C++/CLI(以前叫C++ ME,托管扩展) VC++/CLI可以同时支持MFC和.NET.但是事实上几乎没有人用,是很冷僻的技术. 相比较MFC,WinForms和WPF要好太多,C#也

学习C语言的数组

C语言的数组 数组声明的实例:int num[3];只要记下这个模板就好. 不建议使用变量定义数组,如果使用了变量定义数组,作为数组的元素的个数,不初始化的情况下是随机值,如果初始化会直接报错 注意:如果定义的同时进行初始化,那么元素的个数可以省略 省略之后,初始化赋值几个数据,那么数组的长度就是几,也就是说数组将来就能存储几个数据. int scores[] = {1,3};//只有两个存储空间了 如果没有进行初始化,就不能省略元素个数: 错误的:int scores[]; 可以通过[]索引指

请问数组与集合的区别

问题描述 数组与集合的区别 解决方案 解决方案二:数组是数组,集合是集合.数组也属于集合的一种.解决方案三:一般,数组是静态的,而集合是可以动态扩展容量,集合提供更多的成员方法,不过数组更轻量级,语言级支持,性能会更好.解决方案四:他们使用的场合不同数组,修改不频繁,但是要求访问使用下标集合,添加,删除频繁,集合有很多种了,解决方案五:集合表示一组可以通过遍历每个元素来访问的一组对象,特别是可以用foreach循环来访问它们.对象如果可以提供相关对象的引用,就是一个集合,称为枚举,它可以遍历集合

c语言,数组,数组名表示首地址

问题描述 c语言,数组,数组名表示首地址 c语言中为什么数组名a和&a的输出结果是一样的,a不是本来就是地址吗 解决方案 应该是a和&a都被编译器解释成数组的首地址了. 解决方案二: 你说的没错,a是表示数组首元素的地址,但是 你要知道它是一个指针常量,即 一个不能被更改的值.对于printf(""%dn""a);和printf(""%dn""&a);,输出的格式是 %d所以有没有&编译器都不做