Maison >développement back-end >C++ >Comment dois-je utiliser la boucle For basée sur une plage de C 11 pour observer et modifier les éléments du conteneur ?

Comment dois-je utiliser la boucle For basée sur une plage de C 11 pour observer et modifier les éléments du conteneur ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 03:55:12237parcourir

How Should I Use C  11's Range-Based For Loop for Observing and Modifying Container Elements?

Comment utiliser la plage basée sur la plage de C 11 ?

Syntaxe :

La syntaxe de la plage de C 11- basé sur la boucle for varie en fonction de l'opération souhaitée sur les éléments du conteneur :

Observation éléments :

  • Pour simplement observer les éléments, capturez par référence const : for (const auto& elem : conteneur)

    • Pour un prix bon marché copier les types, simplifier en : for (auto elem : conteneur) si souhaité.

Modification des éléments :

  • Capture par référence (non const) : pour (auto& elem : conteneur)

    • Pour les conteneurs avec des itérateurs proxy (comme std::vector), utiliser : pour (auto&& elem : conteneur)

Directives :

Observer vs. Modifier

Observer :

  • Le but est d'accéder aux éléments sans les modifier.
  • Utiliser pour (const auto& elem : conteneur) ou pour (auto elem : conteneur) lorsque les éléments sont bon marché à copier.

Modification :

  • Le but est de modifier des éléments en place.
  • Utiliser pour (auto& elem : conteneur ).
  • Pour les itérateurs proxy, utilisez : for (auto&& elem : conteneur).

Code générique :

En code générique, pour assurer la compatibilité avec divers types et conteneurs :

Observer :

  • Toujours utiliser pour (const auto& elem : conteneur).

Modification :

  • Utiliser pour (auto&& elem : conteneur).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn