C++ 检查数组空c++;

C++ 检查数组空c++;,c++,arrays,C++,Arrays,我正在寻找一个解决方案,如何找到不包含任何元素的一维数组。到目前为止,我已经完成了以下一些代码,这些代码非常漂亮,但如果有任何其他解决方案,这将是很好的 代码(01) #include <iostream> #include <list> using namespace std; int main() { list<int> mylist{}; if (mylist.empty()) { cout <<

我正在寻找一个解决方案,如何找到不包含任何元素的一维数组。到目前为止,我已经完成了以下一些代码,这些代码非常漂亮,但如果有任何其他解决方案,这将是很好的

代码(01)

#include <iostream> 
#include <list> 
using namespace std; 

int main() 
{ 
    list<int> mylist{}; 
    if (mylist.empty()) { 
        cout << "True"; 
    } 
    else { 
        cout << "False"; 
    } 
    return 0; 
}
#包括
#包括
使用名称空间std;
int main()
{ 
列出mylist{};
如果(mylist.empty()){

难道你没有试着编译那些代码片段吗

第一个肯定会失败。您正在引用一个内置类型(
int
),就好像它是一个对象,而不是

第二种方法也有类似的问题(将内置类型作为对象调用),不过可以通过调用
std::empty(myarray)来解决
。请注意,您定义指向
int
的指针,然后分配
mypointer=myarray
的行是无用的:因为数组名是指向第一个元素的指针,所以您只是创建了一个不打算修改的副本。因此这是浪费内存的。此外,建议使用
nullptr
或至少是这样宏
NULL
在处理空指针时,因为它们更容易在大量代码中发现,也不容易随意修改。最后但并非最不重要的是,if检查永远不会失败,因为指针将始终包含地址。回到可能的解决方案,我仍然认为
std::empty()
编译过程中可能会失败,因为在浏览他的文档时,似乎无法将数组作为参数,这很有意义,因为数组永远不会为空,它们最多只能包含未初始化的值

第三个代码段将按照预期进行编译和工作,这要归功于向量的构建方式


我不知道这是否可行,但如果您有固定的数据大小,并且希望避免
向量的(小)开销,那么您可能需要查看
数组
对象文档,以回答您的问题:

返回给定容器是否为空

1) 返回c.empty()

2) 返回false

3) 返回il.size()==0

参数 c-具有空方法的容器

数组-任意类型的数组

il-初始值设定项列表


这意味着数组永远不会是空的。数组有固定的大小。

数组永远不会是空的。
50
元素的数组总是有
50
元素。其中一些元素可能没有初始化,但大小在编译时是固定的。此外,
int mylist{5};
定义一个
int
变量,并将其初始化为
5
的值。在我看来,您可以使用它。您可能需要有某种金丝雀值,一种数组中不存在的标记,您可以对其进行测试,以检测初始化但为空的数组。这与nul终止字符串使用的技巧相同。
Code_01按此处提供的方式编译?我对此表示怀疑。您展示的是解决方案,而不是问题。您到底想实现什么?上下文是什么?您是在谈论动态大小的数组吗?所以不是C样式数组,不是std::array,而是std::vector
#include <iostream> 
#include <vector> 
using namespace std; 

int main() 
{ 
    vector<int> myvector{}; 
    if (myvector.empty()) { 
        cout << "True"; 
    } 
    else { 
        cout << "False"; 
    } 
    return 0; 
}