相关疑难解决方法(0)

2D数组与数组数组

2D数组和数组数组之间有什么区别?

我读过像@ Dave这样的评论,似乎可以区分这两者.

如果他使用2d数组或指针到数组类型而不是数组数组,则会中断. - 戴夫

我一直认为这两个都提到:

int arr_arr[][];
Run Code Online (Sandbox Code Playgroud)

编辑: @FutureReader,您可能希望看到如何在C++中使用数组?

c c++ multidimensional-array

11
推荐指数
3
解决办法
5万
查看次数

c ++ 2d数组访问速度根据[a] [b]顺序变化?

可能重复:
为什么我的程序在完全循环8192个元素时会变慢?

我一直在修补一个程序,我用它来简单地总结一个二维数组的元素.一个错字导致了至少在我看来,一些非常奇怪的结果.

处理数组时,矩阵[SIZE] [SIZE]:

for(int row = 0; row < SIZE; ++row)
    for(int col = 0; col < SIZE; ++col)
        sum1 += matrix[row][col];
Run Code Online (Sandbox Code Playgroud)

运行得非常快,但上面的行sum1 ...被修改:

sum2 += matrix[col][row]
Run Code Online (Sandbox Code Playgroud)

正如我在没有意识到的情况下偶然做过的那样,我注意到我的运行时间显着增加.为什么是这样?

c++ arrays multidimensional-array

11
推荐指数
2
解决办法
4303
查看次数

如何获得数组的大小?

在C#中,我使用嵌入到数组中的Length属性来获取大小.如何在C++中做到这一点?

c++ arrays

10
推荐指数
3
解决办法
6万
查看次数

C++中的数组是否与C相同?

C++编译器是否像在C中一样处理数组?

例如

在C中,

  • 使用下标运算符的数组访问始终被解释为指针.
  • 在函数参数中,数组声明被视为指向元素开始的指针.

c c++ arrays

10
推荐指数
2
解决办法
338
查看次数

为什么@和$字符不能用于C和C++中的任何内容?

在这两种语言的基本来源字符集包括每除外打印的ASCII字符@,$`.我可以理解不使用重音,因为它并不总是被解释为一个单独的角色,它看起来也非常类似于撇号.但有没有一个特定的原因,为什么@和$没有任何用法或语言设计师只是用尽了想法?:)

c c++ language-design

10
推荐指数
2
解决办法
871
查看次数

将二维数组作为参数传递

我试图将一个二维数组传递给一个接受指向指针的指针的函数。而且我了解到二维数组不是指向指针的指针(指向一维数组的指针)。当我编译下面的代码时,我收到了这个错误。

#include<iostream>

void myFuntion(int **array)
{
}
int main()
{
   int array[][]= {{1,2,3,4},{5,6,7,8,9},{10,11,12,13}};
   myFuntion(array);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

在函数“int main()”中:第 5 行:错误:将“数组”声明为多维数组必须具有所有维度的边界,但由于 -Wfatal 错误而终止的第一次编译除外。

如果可能的话,任何人都可以清除我对此的疑虑和一些文档,以消除我的更多疑虑。

c++ pointers

10
推荐指数
1
解决办法
4万
查看次数

C++ 11类型演绎与const char*

GotW 94中,Herb Sutter区分了"经典C++"声明

const char* s = "Hello";
Run Code Online (Sandbox Code Playgroud)

和"现代"风格

auto s = "Hello";
Run Code Online (Sandbox Code Playgroud)

他告诉我们,有一个"中的类型细微的差别s,这里的auto风格是比较正确的." [编辑补充:评论表明,这可能不是Sutter实际意义的公平表示; 见下面的讨论.]

但是......有什么区别?我的印象是a const char *是引用字符串文字的正确方法.此外,当我问我的调试器(lldb)时,它似乎认为类型实际上是相同的:

* thread #1: tid = 0x1756c2, 0x0000000100000f8f test`main + 31 at test.cc:4, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x0000000100000f8f test`main + 31 at test.cc:4
   1    int main(void) {
   2        const char* s = "Hello";
   3        auto t = "Hello";
-> 4        return 0;
   5    }
(lldb) fr v
(const …
Run Code Online (Sandbox Code Playgroud)

c++ char auto c++11 gotw

10
推荐指数
2
解决办法
571
查看次数

const数组指向const值的指针

如果我创建一个const值的全局数组,例如

const int SOME_LIST[SOME_LIST_SIZE] = {2, 3, 5, 7, 11};
Run Code Online (Sandbox Code Playgroud)

是否有可能以任何方式修改SOME_LIST?

我怎么写这个SOME_LIST指向一个const内存位置,并且是一个const指针本身(即不能指向其他地方)?

c++ arrays const const-correctness

9
推荐指数
2
解决办法
9908
查看次数

如何在没有内存操作的情况下在C++和STL中定义2D数组?

有几种方法可以在没有内存操作的情况下在C++和STL中定义2D数组,以下代码说明了两种不同的方法:

int main () 
{
    /**************
        1   2   3
        4   5   6
    ***************/
    // Method 1
    const int ROW = 2;
    const int COL = 3;
    int array1[ROW][COL];
    for(int i=0; i<ROW; i++)
        for(int j=0; j<COL; j++)
            array1[i][j] = i*COL+j+1;

    // Method 2
    typedef vector<vector<int> > ARRAY; 
    ARRAY array2;
    vector<int> rowvector;
    for(int i=0; i<ROW; i++)
    {
        rowvector.clear();
        for(int j=0; j<COL; j++)
            rowvector.push_back(i*COL+j+1);
        array2.push_back(rowvector);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:还有其他方法来定义2D数组吗?哪一个最有效?谢谢!

c++ arrays stl std stdvector

9
推荐指数
5
解决办法
3万
查看次数

C++ 14:从参数值初始化constexpr变量

假设我有一个可以通过constexpr函数返回常量表达式的类:

template<int N>
struct Foo {
  constexpr int Bar() const { return N; }
};
Run Code Online (Sandbox Code Playgroud)

如果我想初始化constexpr值Foo::Bar(),我应该如何传递类型的参数Foo?我已经尝试了这两个,constexpr每个都有一个示例变量来测试它是否可以初始化:

template<int N>
constexpr int ByValue(Foo<N> f) {
  constexpr int i = f.Bar();
  return f.Bar();
}

template<int N>
constexpr int ByReference(const Foo<N> &f) {
  constexpr int i = f.Bar();
  return f.Bar();
}

constexpr int a = ByValue(Foo<1>{});
constexpr int b = ByReference(Foo<1>{});
Run Code Online (Sandbox Code Playgroud)

但是clang 3.7引发了一个错误,ByReference而gcc> = 5.1则没有:现场演示

main.cpp:15:25: error: constexpr variable 'i' must be initialized …
Run Code Online (Sandbox Code Playgroud)

c++ gcc clang constexpr c++14

9
推荐指数
1
解决办法
955
查看次数