首頁 > 後端開發 > C++ > 主體

如何在 C 中迭代連續的元素對而不使用不需要的分隔符號?

Barbara Streisand
發布: 2024-10-27 04:20:29
原創
191 人瀏覽過

How to Iterate Over Consecutive Element Pairs in C   without Unwanted Separators?

使用C 慣用語迭代連續的元素對

一個常見的程式設計任務是迭代集合並在每個連續的元素對之間執行操作元素。雖然基本的 range-for 循環可以處理迭代,但它通常會在末尾產生不必要的分隔符號。

幸運的是,有幾種慣用的方法可以解決此問題。一種方法涉及使用附加指標來追蹤分隔符號狀態:

<code class="cpp">const auto separator = "WhatYouWantHere";
const auto* sep = "";
for(const auto&amp; item : items) {
    std::cout << sep << item;
    sep = separator;
}
登入後複製

在此範例中,sep 指標被初始化為空字串。隨著循環的進行,每當遇到非最終元素時, sep 都會使用分隔符號字串進行更新。預設情況下, sep 將是第一個元素之前的空字串,從而導致沒有前導分隔符號。

或者,有些 C 函式庫提供專門的迭代器來處理分隔符號邏輯。例如,Boost Range 函式庫包含相鄰的_filtered 函數,可用於將謂詞應用於連續的元素對,並過濾掉任何未通過謂詞的元素:

<code class="cpp">#include <boost/range/algorithm/adjacent_filtered.hpp>

for(auto& adjacent_pair : boost::adjacent_filtered(items, [](const auto& lhs, const auto& rhs) { return lhs != rhs; })) {
    std::cout << adjacent_pair.first << " separator " << adjacent_pair.second;
}</code>
登入後複製

這種方法提供了一種簡潔而優雅的解決方案,但需要使用外部函式庫。最終,選擇使用哪種習慣用法取決於程式設計師的特定需求和偏好。

以上是如何在 C 中迭代連續的元素對而不使用不需要的分隔符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!