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