精华内容
下载资源
问答
  • c++如何获得数组的大小

    千次阅读 2018-01-14 20:33:26
    java有可以获得数组大小的函数,但是c++没有,在写函数时候发现了一些问题,就是传数组名时候,会在函数中将数组退化成指针,得不到想要结果,使用引用之后就不会有这样问题#include #include #include ...

    java有可以获得数组大小的函数,但是c++没有,在写函数的时候发现了一些问题,就是传数组名的时候,会在函数中将数组退化成指针,得不到想要的结果,使用引用之后就不会有这样的问题

    #include<iostream>
    #include<typeinfo>
    #include<vector>
    using namespace std;
    
    // 使用 int[]
    template <typename T>
    inline int get_array_len(T &p)
    {
        return sizeof(T) / sizeof(*p);
    }
    
    void insertsort(int arr[], int n)
    {
        int j = 0;
        for(int i = 2; i < n; i++)
        {
            if(arr[i] < arr[i-1])
            {
                arr[0] = arr[i];
                for(j = i-1; arr[0] < arr[j]; j--)
                {
                    arr[j + 1] = arr[j];
                }
                arr[j + 1] = arr[0];
            }
        }
    }
    
    template <typename T>
    inline void insertsort(T &arr)
    {
        insertsort(arr, get_array_len(arr));
    }
    
    // 使用 vector<int> *或者用引用,就不需要->了
    void insertsort_vec(vector<int> *arr)
    {
        for(int i = 2; i < arr->size(); i++)
        {
            if(arr->at(i) < arr->at(i-1))
            {
                arr->at(0) = arr->at(i);
                int j;
                for(j = i - 1; arr->at(0) < arr->at(j); j--)
                {
                    arr->at(j+1) = arr->at(j);
                }
                arr->at(j+1) = arr->at(0);
            }
        }
    }
    
    int main()
    {
        vector<int> vec {0, 9, 8, 7, 6, 5, 4, 3, 2, 1};
        int arr[] = {0, 9, 8, 7, 6, 5, 4, 3, 2, 1};
    
        insertsort(arr);
        insertsort_vec(&vec);
    
        cout << "使用vector *的insertsort函数后,结果为:" << endl;
        for (auto i = vec.begin() + 1; i != vec.end(); ++i) 
        {
            cout << *i << (i + 1 != vec.end() ? ' ': '\n');
        }
    
        cout << endl << "使用int[]的insertsort函数后,结果为:" << endl;
        int len = get_array_len(arr);
        //因为传数组名后会退化为指针,所以不能写函数来直接计算数组大小
        for (int i = 1; i < len; i++)
        {
            cout << arr[i] << (i + 1 != len ? ' ': '\n');
        }
    
        int ar[30];
        int *p = ar;
        cout << endl;
        //输出结果就可以看出来数组名不是都代表一个意思,代表数组或者首地址
        cout << "int ar[30];  // ar的类型是:" << typeid(ar).name() << endl;
        cout << "int *p = ar; // p的类型是:" << typeid(p).name() << endl;
        return 0;
    }
    
    展开全文
  • 如何获得数组的长度

    万次阅读 2013-12-24 11:58:14
    给出语句"int [] array"声明,并且初始化该数组,则下面哪个表达式会返回数组的大小。请选择正确的答案。 (a)array[].length()。 (b)array.length()。 (c)array[].length。 (d)array.length。 ...

    给出语句"int [] array"声明,并且初始化该数组,则下面哪个表达式会返回数组的大小。请选择正确的答案。

    (a)array[].length()。

    (b)array.length()。

    (c)array[].length。

    (d)array.length。

    (e)array[].size()。

    (f)array.size()。

    考点:考查求职者对于数组长度的掌握和理解。

    出现频率:★★★★

    解析

    在Java中每个数组都是对象,并有一个length变量,来表示该数组的长度。下面示例可以动态为数组元素赋值:

    int myarray[]=new int[10];
    for(int j=0; j<myarray.length;j++){ myarray[j]=j;
    }

    注意:数组有length变量,而不是length()方法。习惯了使用类似与String类型的length()方法来获得字符串长度的求职者一定要注意这点。数组中的length是域(或者说特性)而不是方法。

    答案:(d)。

    展开全文
  • (1)自定义方法 myList = [1, 2, 3, 100, 5] index_list=[i[0] for i in sorted(enumerate(myList)...enumerate(myList)返回一个包含(index,value)元组列表 [(0, 1), (1, 2), (2, 3), (3, 100), (4, 5)] 通...

    (1)自定义方法

    myList = [1, 2, 3, 100, 5]
    index_list=[i[0] for i in sorted(enumerate(myList), key=lambda x:x[1])]

    enumerate(myList)返回一个包含(index,value)元组的列表

    [(0, 1), (1, 2), (2, 3), (3, 100), (4, 5)]

    通过将列表传递给排序并指定一个函数来抽取排序键(每个元组的第二个元素;这是lambda的用途),最后,每个排序的元素的原始索引使用[i [0 ] for i in …]列表解析。 

    来自:https://codeday.me/bug/20170625/33969.html 

    (2)np.argsort函数

    import numpy as np
    a = np.array([1,4,3,5,2])
    b = np.argsort(a)
    print(b)

    print结果为[0 4 2 1 3] ,即为从小到大排序的索引

    来自:https://blog.csdn.net/guotong1988/article/details/78790210

    (3) 利用heapq模块

    # -*- coding: utf-8 -*-
    import heapq
    
    nums = [1, 8, 2, 23, 7, -4, 18, 23, 24, 37, 2]
    
    # 最大的3个数的索引
    max_num_index_list = map(nums.index, heapq.nlargest(3, nums))
    # 最小的3个数的索引
    min_num_index_list = map(nums.index, heapq.nsmallest(3, nums))
    print(list(max_num_index_list))
    print(list(min_num_index_list))
    

    来自:https://blog.csdn.net/ns2250225/article/details/80118621

    这里利用了数组自身属性 index,

    list.index(target), 其中list是目标list,target是需要的下标对应的值,返回对应的索引值

    map函数的返回值是一个 iterators,所以打印这里加一个list强制输出所有


    推荐前两种方法, 第三种不推荐,第三种遇到相同大小的时候会都返回第一个位置的索引

    例如求如下列表中最大的三个数字的索引

    # -*- coding: utf-8 -*-
    __author__ = 'fff_zrx'
    import heapq
    import numpy as np
    test_list= [1,2,3,3,4]
    index_list=[i[0] for i in sorted(enumerate(test_list), key=lambda x:x[1])]
    b = np.argsort(np.array(test_list))
    max_num_index_list = map(test_list.index, heapq.nlargest(3, test_list))
    print("第一种:",index_list[-3:][::-1])
    print("第二种:",b[-3:][::-1])
    print("第三种:",list(max_num_index_list))

    输出为:

    第一种: [4, 3, 2]
    第二种: [4 3 2]
    第三种: [4, 2, 2] 

    ps:a[::-1]相当于 a[-1:-len(a)-1:-1],即倒序输出,前两者默认都是从小到大排序的索引,所以需要倒序输出一下

     

    展开全文
  • c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)如:{intdata[4];intlength;length=sizeof(data)/sizeof(data[0]);//数组占内存总空间,除以单个元素占内存空间大小printf("lengthofdata[4]=%d...

    c

    语言中,定义数组后可以用

    sizeof

    命令获得数组的长度(可容纳元素个数)

    如:

    {

    int data[4];

    int length;

    length=sizeof(data)/sizeof(data[0]);  //

    数组占内存总空间,除以单个元素占内存

    空间大小

    printf("length of data[4]=%d", length ); //

    输出

    length of data[4]=4

    }

    但,通过传递数组名参数到子函数中,以获得数组长度是不可行的。如:

    int getLength(int[] a){

    int length;

    length=sizeof(a)/sizeof(a[0]); //

    这样是错误的,得到的结果永远是

    1

    return length;

    }

    因为,

    a

    是函数参数,到了本函数中,

    a

    只是一个指针(地址,系统在本函数运

    行时,

    是不知道

    a

    所表示的地址有多大的数据存储空间,

    这里只是告诉函数:

    个数据存储空间首地址),所以,

    sizoef(a)

    的结果是指针变量

    a

    占内存的大小,

    一般在

    32

    位机上是

    4

    个字节。

    a[0]

    int

    类型,

    sizeof(a[0])

    也是

    4

    个字节,

    所以,

    结果永远是

    1

    因此,获得数组长度,只能在数组定义所在的代码区中,采用以上方法,才可以达到效果。

    展开全文
  • 如何获取数组的长度

    万次阅读 2017-03-19 16:40:50
    c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数) 如: { int data[4]; int length; length=sizeof(data)/sizeof(data[0]); //数组占内存总空间,除以单个元素...
  • <p>of只会返回这个地址表示的内容的大小. 这个代码知识一小部分,完整的题目是这样的,已知某个二叉树的中序和先序遍历(两个链式存储方式的数组)设计算法,设计算法构建这个二叉树并求出他的层次遍历的序列. ...
  • 1、数组的大小数组是用编号排序的,那么如何获得一个数组的大小呢?——表示数组大小的函数:Lbound(数组) 可以获取数组的最小下标(编号)Ubound(数组) 可以获取数组的最大上标(编号)Ubound(数组,1) 可以获得数组的行...
  • 展开全部1、c语言中,e5a48de588b63231313335323631343130323136353331333337613861定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)。例如:intdata[4];intlength;length=sizeof(data)/sizeof(data[0]);/...
  • 我想知道是否知道如何使用反射获得数组对象的大小?我有一个车辆组件,其中包含Car类型的数组对象.Vehicles.javapublic class Vehicles{private Car[] cars;// Getter and Setters}Car.javapublic class Car{private ...
  •   简而言之就是在js中获得一个有null值的数组,往servlet中放准备往数据库中加,但是有null时候一直报错,报前端什么500还是,总之就是最烦那个错,记录一下如何消除其中null let filterdan = ...
  • c++中string可以通过string.length()来获得...如何获得呢?可以通过sizeof的特殊用法,都知道sizeof()是获得所占的空间的大小,所以可以:int length = sizeof(a)/sizeof(int);来得到a数组的元素个数。1.vect...
  • 当你定义一个数组的时候: int a[] = {1, 2, 3}; // 实际上被编译为 int...注意 —— 你绝对没有办法通过数组名动态获得数组的大小。当你丢失a的长度信息的时候,你永远不可能知道他的长度。 那么 sizeof 是怎么...
  • '数组是用编号排序的,那么如何获得一个数组的大小呢 'Lbound(数组) 可以获取数组的最小下标(编号) 'Ubound(数组) 可以获取数组的最大上标(编号) 'Ubound(数组,1) 可以获得数组的行方面(第1维)最大上标 'Ubound...
  • 在java中,数组是一个简单的先行序列,它使得元素的访问速度非常快,但付出的代价是--创建一个数组对象时,他的大小是固定的,而且不可在那个数组对象的“存在时间”内发生改变(也就是只能容纳一种类型的对象)。...
  • 在java中,数组是一个简单的先行序列,它使得元素的访问速度非常快,但付出的代价是--创建一个数组对象时,他的大小是固定的,而且不可在那个数组对象的“存在时间”内发生改变(也就是只能容纳一种类型的对象)。...
  • 如何获得JavaScript对象的大小?下面本篇文章就来给大家介绍一下获得JavaScript对象大小的方法,希望对大家有所帮助。 我们可以在Object.keys()方法和length属性的帮助下获得java脚本对象的大小。Object.keys() ...
  • C++中数组的长度

    千次阅读 2011-01-12 22:53:00
    c++中string可以通过string.length()来获得...如何获得呢? 可以通过sizeof的特殊用法,都知道sizeof()是获得所占的空间的大小,所以可以:int length = sizeof(a)/sizeof(int);来得到a数组的元素个数。
  • 小编典典image.getData()返回栅格 副本 。也许如果image.setData...在将像素大小增加为28 * 28 *4之前,我已经获得数组索引超出范围异常。对于TYPE_INT_RGB,以下内容应产生白色图像:public class ASD{pu...
  • 当您使用FILESYSTEMOBJECT对象获得某个目录下文件列表时候,你有没有发现无法控制它们排序方式,比如按照名字排序,按照扩展名排序,按照文件大小排序等等,让我们试着用数组给它们排排序儿。 如果您想通过...
  • 当我想使用一个数组来存储来自扫描仪输入时,但不知道它包含多少个令牌,难道没有任何方法可以获得存储在数组中与令牌大小完全相同所有输入吗?情况是这样。public static void main(String[] args){Scanner sc =...
  • Python是一种非常具有表现力语言,它提供了不同结构来简化...我们如何获得列表长度或大小?在本教程中,我们将研究获取长度列表不同方法。使用内置len()函数如前所述,len是默认情况下python提供内置...
  • c++中string可以通过string.length()来获得...如何获得呢?可以通过sizeof的特殊用法,都知道sizeof()是获得所占的空间的大小,所以可以:int length = sizeof(a)/sizeof(int);来得到a数组的元素个数。1.vector...
  • 如何获得要显示字体的大小

    千次阅读 2005-07-19 10:50:00
    首先把要显示的字符串转换到字符数组中,然后根据Ascall码判断有多少个汉字,多少个字符,一般情况字符显示是汉字的一半,然后根据字体的大小,不过字体大小就是主观决定了,还好如果是宋体,9象素,我判断是12,...
  • 如何获得JavaScript对象的大小?下面本篇文章就来给大家介绍一下获得JavaScript对象大小的方法,希望对大家有所帮助。 我们可以在Object.keys()方法和length属性的帮助下获得java脚本对象的大小。Object.keys() ...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 326
精华内容 130
关键字:

如何获得数组的大小