有没有一种方法可以计算函数内部的长度而不是作为参数传递?

布鲁斯千

我是C ++的新手,这是我编写的模板选择排序函数,它接受一个数组并将其长度作为参数。“”

template <class T>
void mySort(T a[], int len) {
    for (int i = 0; i < len; i++)
    {   
        int min = i;
        for (int j = i+1; j < len; j++)
        {
            if (a[min]>a[j])
            {
                min = j;
            }
        }
        if (min!=i)
        {
            T tmp = a[min];
            a[min] = a[i];
            a[i] = tmp;
        }
    }
}

这里有几件事情我感到困惑
首先,我知道,如果我们在数组中传递给函数,它实际上不是这个数组的副本,因此这背后整个概念?是我们传递其引用还是指向第一个索引的指针?

其次,是否可以计算此函数内部数组的长度,而不用传递为参数?

第三,有人告诉我,在c ++中最好使用char []而不是字符串,因为char []与基本c有关,而字符串只是c ++中的STL,所以对于我的大部分代码来说,我应该使用char []而不是字符串?

带翅膀的小行星

首先,我知道如果我们将数组传递给函数,实际上它不是该数组的副本,那么这背后的整个概念是什么?是我们传递其引用还是指向第一个索引的指针?

它是第一个元素的指针。即使您编写了T a[],该语言也将其转换T* a为函数参数。很奇怪,但是我们走了;这就是在C和C ++中“按值传递数组”的工作方式(或不起作用)。

其次,是否可以计算此函数内部数组的长度,而不用传递为参数?

否。该类型的信息不可用,因此必须将其作为单独的参数传递。

解决方法包括通过引用传递数组本身:

template <class T, std::size_t N>
void mySort(T (&a)[N]) {

…或传递astd::array或传递a std::vector,所有这些都“知道”尺寸。

第三,有人告诉我,在c ++中最好使用char []而不是字符串,因为char []与基本c有关,而字符串只是c ++中的STL,所以对于我的大部分代码来说,我应该使用char []而不是字符串?

这与通常的建议相反。尽管使用char数组不是邪恶的,并且可以在有一些不需要动态分配的简单数组的情况下完成,但它std::string更加灵活且易于使用,通常应成为字符数组的首选工具。

我不知道“这只是C ++中的STL”的含义。

如果您正在执行“竞争性编程”,那么通常的约定可能不适用,但是,那不是真正的编程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种方法可以将对象名称动态传递给函数(作为参数)并使用参数引用该对象的属性?

来自分类Dev

有没有一种方法可以将数学函数作为Python 3中函数的参数?

来自分类Dev

有没有一种方法可以将数学函数作为Python 3中函数的参数?

来自分类Dev

C#:有没有一种方法可以将枚举作为参数传递?

来自分类Dev

有没有一种方法可以将模板化函数签名作为模板模板参数传递

来自分类Dev

有没有一种方法可以在不运行整个类的情况下将类作为参数传递给函数?

来自分类Dev

有没有一种方法可以保存带有参数的函数调用?

来自分类Dev

有没有一种方法可以保存带有参数的函数调用?

来自分类Dev

有没有一种方法可以自动对齐函数参数?

来自分类Dev

有没有一种方法可以使用对象的类型作为类型参数的参数?

来自分类Dev

有没有一种方法可以将一组值作为Oracle SQL语句中的参数传递

来自分类Dev

有没有一种方法可以将带有任何类型和数量的参数的void函数作为方法的参数传递并将其存储在数据成员中?(C ++)

来自分类Dev

有没有一种方法来获取函数参数的名称(而不是参数)?

来自分类Dev

有没有一种方法可以传递对象的副本,而不是引用Java方法

来自分类Dev

有没有一种方法可以使构造函数接受两种可能的参数类型?

来自分类Dev

Haskell:有没有一种方法可以从函数内部推断出函数的返回类型?

来自分类Dev

有没有一种方法可以将class方法作为python中的关键参数(sort / min / ..)?

来自分类Dev

有没有一种方法可以将边框置于元素内部而不是外部?

来自分类Dev

有没有一种方法可以从作为泛型传递的接口中推断特定值的类型?

来自分类Dev

有没有一种方法可以将复合术语作为参数从swi-prolog中的形式传递

来自分类Dev

有没有一种方法可以将函数传递给useState()的React Hooks提供的“ updater”函数?

来自分类Dev

有没有一种方法可以通过php函数传递多个有限数量的数组?

来自分类Dev

有没有一种方法可以像在VB中那样强制将值传递给参数而不是C#中的ref?

来自分类Dev

有没有一种方法可以将字符串数组而不是单独的参数传递给Entity Framework类?

来自分类Dev

Facebook登录:有没有一种方法可以接收重定向的URL片段作为querystring参数?

来自分类Dev

有没有一种方法可以计算使用一组特定参数调用函数模拟的次数?

来自分类Dev

有没有一种方法可以为F#构造函数中的函数指定命名参数?

来自分类Dev

有没有一种方法可以将vue模型值传递给方法函数?

来自分类Dev

有没有一种方法可以强制httpie对查询参数中的空格使用'%20'而不是'+'?

Related 相关文章

  1. 1

    有没有一种方法可以将对象名称动态传递给函数(作为参数)并使用参数引用该对象的属性?

  2. 2

    有没有一种方法可以将数学函数作为Python 3中函数的参数?

  3. 3

    有没有一种方法可以将数学函数作为Python 3中函数的参数?

  4. 4

    C#:有没有一种方法可以将枚举作为参数传递?

  5. 5

    有没有一种方法可以将模板化函数签名作为模板模板参数传递

  6. 6

    有没有一种方法可以在不运行整个类的情况下将类作为参数传递给函数?

  7. 7

    有没有一种方法可以保存带有参数的函数调用?

  8. 8

    有没有一种方法可以保存带有参数的函数调用?

  9. 9

    有没有一种方法可以自动对齐函数参数?

  10. 10

    有没有一种方法可以使用对象的类型作为类型参数的参数?

  11. 11

    有没有一种方法可以将一组值作为Oracle SQL语句中的参数传递

  12. 12

    有没有一种方法可以将带有任何类型和数量的参数的void函数作为方法的参数传递并将其存储在数据成员中?(C ++)

  13. 13

    有没有一种方法来获取函数参数的名称(而不是参数)?

  14. 14

    有没有一种方法可以传递对象的副本,而不是引用Java方法

  15. 15

    有没有一种方法可以使构造函数接受两种可能的参数类型?

  16. 16

    Haskell:有没有一种方法可以从函数内部推断出函数的返回类型?

  17. 17

    有没有一种方法可以将class方法作为python中的关键参数(sort / min / ..)?

  18. 18

    有没有一种方法可以将边框置于元素内部而不是外部?

  19. 19

    有没有一种方法可以从作为泛型传递的接口中推断特定值的类型?

  20. 20

    有没有一种方法可以将复合术语作为参数从swi-prolog中的形式传递

  21. 21

    有没有一种方法可以将函数传递给useState()的React Hooks提供的“ updater”函数?

  22. 22

    有没有一种方法可以通过php函数传递多个有限数量的数组?

  23. 23

    有没有一种方法可以像在VB中那样强制将值传递给参数而不是C#中的ref?

  24. 24

    有没有一种方法可以将字符串数组而不是单独的参数传递给Entity Framework类?

  25. 25

    Facebook登录:有没有一种方法可以接收重定向的URL片段作为querystring参数?

  26. 26

    有没有一种方法可以计算使用一组特定参数调用函数模拟的次数?

  27. 27

    有没有一种方法可以为F#构造函数中的函数指定命名参数?

  28. 28

    有没有一种方法可以将vue模型值传递给方法函数?

  29. 29

    有没有一种方法可以强制httpie对查询参数中的空格使用'%20'而不是'+'?

热门标签

归档