Cpp Libs List Front
π
2026-06-23 | π C++
## C++ std::list::front() Function
The `std::list::front()` is a member function of the C++ Standard Template Library (STL) `std::list` container. It is used to access the very first element in the list.
Unlike vectors or arrays, a `std::list` is implemented as a doubly-linked list. The `front()` function provides direct, constant-time access to the head of this list.
---
## Syntax and Return Value
### Syntax
```cpp
reference front();
const_reference front() const;
```
### Parameters
* This function does not accept any parameters.
### Return Value
* **`reference`**: If the list object is non-const, the function returns a direct reference to the first element. This allows you to modify the element directly.
* **`const_reference`**: If the list object is const, the function returns a const reference to the first element, allowing read-only access.
### Complexity
* **Time Complexity**: $\mathcal{O}(1)$ (Constant time).
* **Space Complexity**: $\mathcal{O}(1)$.
---
## Code Examples
### Example 1: Accessing and Modifying the First Element
Because `front()` returns a reference, you can use it both to read the value of the first element and to modify it.
```cpp
#include
#include
int main() {
// Initialize a list with 5 integer elements
std::list numbers = {10, 20, 30, 40, 50};
// 1. Access the first element
std::cout << "First element: " << numbers.front() << std::endl;
// 2. Modify the first element directly using the returned reference
numbers.front() = 100;
// 3. Print the modified first element
std::cout << "Modified first element: " << numbers.front() << std::endl;
return 0;
}
```
**Output:**
```text
First element: 10
Modified first element: 100
```
---
### Example 2: Read-Only Access with `const std::list`
When working with a `const` list, `front()` returns a `const_reference`, preventing any modifications to the element.
```cpp
#include
#include
void printFirstElement(const std::list& words) {
// Since 'words' is const, front() returns a const reference
std::cout << "The first word is: " << words.front() << std::endl;
// The following line would cause a compilation error:
// words.front() = "NewWord";
}
int main() {
const std::list fruits = {"Apple", "Banana", "Cherry"};
printFirstElement(fruits);
return 0;
}
```
**Output:**
```text
The first word is: Apple
```
---
## Important Considerations
### 1. Undefined Behavior on Empty Lists
Calling `front()` on an empty list (`std::list::empty() == true`) results in **undefined behavior**. The function does not throw an exception. Therefore, you should always ensure the list is not empty before calling `front()`.
**Safe Usage Pattern:**
```cpp
std::list my_list;
if (!my_list.empty()) {
std::cout << "First element: " << my_list.front() << std::endl;
} else {
std::cout << "The list is empty!" << std::endl;
}
```
### 2. `front()` vs. `begin()`
It is important to distinguish between `front()` and `begin()`:
* **`front()`** returns a **reference** to the first element (`T&`).
* **`begin()`** returns an **iterator** pointing to the first element (`std::list::iterator`).
```cpp
std::list numbers = {10, 20, 30};
int first_val = numbers.front(); // Gets the value 10
std::list::iterator it = numbers.begin(); // Gets an iterator pointing to 10
int first_val_via_it = *numbers.begin(); // Dereferencing the iterator also gets 10
```