c++ - c++ std::list::front() 返回一个空列表是什么?

标签 c++ null stdlist

如果我有代码:

struct Test
{
  int x = 10;
};

int main()
{
  std::list<Test> linkedList;
  std::cout << linkedList.front().x << std::endl;
}
---

out -> 0

为什么我的 test.x 值是 0?如果我将列表更改为 int 类型,它会返回 0。如果我给它一个 char 类型,我什么也得不到(或“”)。

我很好奇它是如何(以及为什么)在幕后发生的。它如何处理返回任何类型的值而不退出程序或需要 try/catch?

最佳答案

linkedList 是一个空的列表。调用front()其结果是UB ,意味着一切皆有可能。

Returns a reference to the first element in the container.

Calling front on an empty container is undefined.

关于c++ - c++ std::list::front() 返回一个空列表是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60943480/

相关文章:

c++ - 嵌套的 STL 列表

c++ - 如何从 std::list 实现 O(1) 删除

使用派生类的 C++ 命名参数实现

c++ - MoveFileA() 不喜欢我的论点

java - 检查Java中的scala Tuple是否包含 `null`

sql - PostgreSQL:返回列之间的间隙和值不匹配

c - 为什么我的 while 循环忽略 NULL 条件?

c++ - 是否有 STL 算法或 C++ 习惯用法根据谓词将项目从一个 std::list move 到另一个?

c++ - 关于命名空间的问题

c++ - 写入 PGM 文件