Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何获取字符数组的列数?_C++_C - Fatal编程技术网

C++ 如何获取字符数组的列数?

C++ 如何获取字符数组的列数?,c++,c,C++,C,有没有办法获得字符数组的列数 声明如下:static const char*countries[][2]={…} 但是我想动态地获取它,所以我自己不必键入'2'。不,您必须将大小与数组一起传递。可能存在依赖于系统/编译器/库的方式,但依赖这些功能不是一个好主意。 如果你使用C++标准库,最好使用更多的元数据,比如你感兴趣的。 不,你必须把数组的大小传递给它。可能存在依赖于系统/编译器/库的方式,但依赖这些功能不是一个好主意。 如果你使用C++标准库,最好使用更多的元数据,比如你感兴趣的。 < P

有没有办法获得
字符数组
的列数

声明如下:
static const char*countries[][2]={…}


但是我想动态地获取它,所以我自己不必键入'2'。

不,您必须将大小与数组一起传递。可能存在依赖于系统/编译器/库的方式,但依赖这些功能不是一个好主意。
如果你使用C++标准库,最好使用更多的元数据,比如你感兴趣的。

不,你必须把数组的大小传递给它。可能存在依赖于系统/编译器/库的方式,但依赖这些功能不是一个好主意。


如果你使用C++标准库,最好使用更多的元数据,比如你感兴趣的。

< P>当然可以。可以使用
sizeof
操作符轻松检查静态初始化的阵列。以下代码段(C)打印与2D指针数组关联的所有大小

#include <stdio.h>

static const char *countries[][2] = { { "dfdf", "dss" }, { "ss"}, { "toto"}};

int main(void) {
  printf("dim0 %zu, dim1 %zu, elements %zu\n",
         sizeof countries/sizeof countries[0],
         sizeof countries[0]/sizeof countries[0][0],
         sizeof countries/sizeof countries[0][0]
         );
}
#包括
静态常量字符*国家[][2]={{“dfdf”、“dss”}、{“ss”}、{“toto”};
内部主(空){
printf(“dim0%zu,dim1%zu,元素%zu\n”,
国家规模/国家规模[0],
国家规模[0]/国家规模[0][0],
国家规模/国家规模[0][0]
);
}

当然可以。可以使用
sizeof
操作符轻松检查静态初始化的阵列。以下代码段(C)打印与2D指针数组关联的所有大小

#include <stdio.h>

static const char *countries[][2] = { { "dfdf", "dss" }, { "ss"}, { "toto"}};

int main(void) {
  printf("dim0 %zu, dim1 %zu, elements %zu\n",
         sizeof countries/sizeof countries[0],
         sizeof countries[0]/sizeof countries[0][0],
         sizeof countries/sizeof countries[0][0]
         );
}
#包括
静态常量字符*国家[][2]={{“dfdf”、“dss”}、{“ss”}、{“toto”};
内部主(空){
printf(“dim0%zu,dim1%zu,元素%zu\n”,
国家规模/国家规模[0],
国家规模[0]/国家规模[0][0],
国家规模/国家规模[0][0]
);
}

请通过显示一些代码进行澄清请通过显示一些代码进行澄清code@Houssni避免过早的优化问题。除非您已经确定某段代码会成为应用程序的瓶颈(例如,内部的紧密循环)或占用大量内存,否则请集中精力使代码正确且可读。标准库代码通常在一个像样的编译器中进行优化。特殊用途的优化通常只在应用程序的热点中需要(您必须对其进行分析才能找到它们)。@Houssni很大程度上取决于您的应用程序真正需要的性能。如果它大部分时间都在等待网络连接或用户交互,那么从中挤出最后一个MIP通常是浪费精力(尽管内存占用可能是一个问题)。除非你*知道你的代码需要高效率(例如,3D实时动画、繁重的数学等),否则在应用程序的总体结构设计上下功夫将为你在寻找bug时省去很多麻烦(而普通C数组是bug的来源!)。尽量避免“一阶”效率低下(即避免使用O(n^3)搜索算法;-)O(n^3)是表示算法复杂性的一种方法。O(n^3)表示(非常粗略地)算法使用的时间与数字的立方或正在处理的元素成比例。括号中的部分确实是一个笑话:众所周知的计算机科学事实是a(一个非常简单的算法)是O(n),因此比O(n^3)好得多。任何编写O(n^3)搜索算法的人都必须努力使其变得如此低效:-)@Houssni O(n^3)基本上意味着“三个嵌套的0-n循环”(比这更微妙,但三个嵌套的循环是您应该避免的)。这个想法是,如果你在10个元素上做一个循环,它将是10次迭代。如果嵌套两个0-10循环,则需要100次迭代。如果嵌套三个0-10循环,则需要1000次迭代,以此类推。如果从10变为11,单循环将从10变为11,而三循环将从1000变为1331。@GiulioFranco,他的例子是一个静态数组,他要求这样做。我把他的“动态”理解为“自动”,因为他说的是“2”。对我来说,问题是他希望现在数组的长度由初始值设定项决定,而不是通过在
[]
@Houssni中提供它来避免过早的优化问题。除非您已经确定某段代码会成为应用程序的瓶颈(例如,内部的紧密循环)或占用大量内存,否则请集中精力使代码正确且可读。标准库代码通常在一个像样的编译器中进行优化。特殊用途的优化通常只在应用程序的热点中需要(您必须对其进行分析才能找到它们)。@Houssni很大程度上取决于您的应用程序真正需要的性能。如果它大部分时间都在等待网络连接或用户交互,那么从中挤出最后一个MIP通常是浪费精力(尽管内存占用可能是一个问题)。除非你*知道你的代码需要高效率(例如,3D实时动画、繁重的数学等),否则在应用程序的总体结构设计上下功夫将为你在寻找bug时省去很多麻烦(而普通C数组是bug的来源!)。尽量避免“一阶”效率低下(即避免使用O(n^3)搜索算法;-)O(n^3)是表示算法复杂性的一种方法。O(n^3)表示(非常粗略地)算法使用的时间与数字的立方或正在处理的元素成比例。括号中的部分确实是一个笑话:众所周知的计算机科学事实是a(一个非常简单的算法)是O(n),因此比O(n^3)好得多。任何编写O(n^3)搜索算法的人都必须努力使其变得如此低效:-)@Houssni O(n^3)基本上意味着“三个嵌套的0-n循环”(比这更微妙,但三个嵌套的循环是您应该避免的)。这个想法是,如果你在10个元素上做一个循环,它将是10次迭代。如果你