Home > Backend Development > C++ > How Can I Correctly Use Range-Based For Loops in C 11?

How Can I Correctly Use Range-Based For Loops in C 11?

Patricia Arquette
Release: 2024-12-29 20:19:12
Original
309 people have browsed it

How Can I Correctly Use Range-Based For Loops in C  11?

How to correctly use the range-based for loop in C 11

The range-based for loop is a concise and powerful Iterator traversal mechanism that has been introduced in C 11 introduced in. It is used to iterate over a container or other iterable sequence and reference elements in the sequence through one or more variables. Here's how to use a range-based for loop correctly:

Syntax

for (auto elem : container) {
  // 代码体
}
Copy after login

Where:

  • The auto keyword means that the compiler will automatically infer the element type.
  • elem is the iterator variable for the elements in the loop.
  • container is the container or iterable sequence to be iterated over.

Element Capture Mode

When using a range-based for loop, you can choose one of the following three element capture modes:

  1. Press Value capture (auto elem): Creates a local copy of an element. This works for types whose elements are cheap to copy (e.g. int, double, etc.).
  2. Capture by reference (auto&elem): Directly reference the element in the container. This is used for modifying elements or types where copying needs to be avoided.
  3. Capture proxy by reference (auto&&elem): For traversing a container using a "proxy iterator" (e.g. std::vector).

Observe or modify

Range-based for loops can be used for two main purposes:

  1. Observe elements: Use const auto&elem captures elements to ensure the original element is not modified.
  2. Modify element: Use auto&elem to capture the element to modify the original element directly.

Guidelines

To correctly use range-based for For loops, consider the following guidelines:

  • For observed elements, use:
for (const auto& elem : container) // 按引用捕获常量
Copy after login
  • For modified elements, use:
for (auto& elem : container) // 按引用捕获
Copy after login
  • If the container uses "proxy Iterator", use:
for (auto&& elem : container) // 按引用捕获 proxy
Copy after login

Notes in Generic Code

In generic code, it is recommended to use const auto&elem to capture elements for observation, and auto&&elem captures elements for modification, as these methods work with various types of containers and elements.

The above is the detailed content of How Can I Correctly Use Range-Based For Loops in C 11?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template