C++对象遍历的几种方法

2023/02/14 C++ 共 1344 字,约 4 分钟

遍历 string

  1. for 循环
    //.size()
    string str = "abcdefg";
    for (int i = 0; i < str.size(); i++) {
        cout << str[i] << ' ';
    }
    //.length()
    for (int i = 0; i < str.length(); i++) {
        cout << str[i] << ' ';
    }
  1. 迭代器
    string str = "abcdefg";
    for (string::iterator it = str.begin(); it != str.end(); it++) {
        cout << *it << ' ';
    }

    string str = "abcdefg";
    for (auto it = str.begin(); it != str.end(); it++) {
        cout << *it << ' ';
    }
  1. 基于范围的循环
    string str = "abcdefg";
    for (auto ch : str) {
        cout << ch << ' ';
    }

遍历 vector

同string

  1. for 循环
    vector<int> vec{0,1,2,3,4,5,6};
    for (int i = 0; i < vec.size(); i++)
    {
        cout << vec[i] << ",";
    }
  1. 迭代器
    vector<int> vec{0,1,2,3,4,5,6};
    for (vector<int>::iterator it = vec.begin(); it != vec.end() ; it++)
    {
        cout << *it << ",";
    }
    

    vector<int> vec{0,1,2,3,4,5,6};
    for (auto it = vec.begin(); it != vec.end() ; it++)
    {
        cout << *it << ",";
    }
  1. 基于范围的循环
    vector<int> vec{0,1,2,3,4,5,6};
    for (auto it: vec)
    {
        cout << it << ",";
    }

遍历 map

  1. 迭代器
    map<string, int> mp;
    mp["张三"] = 20;
    mp["李四"] = 18;
    mp["王五"] = 30;
    for (auto it = mp.begin(); it != mp.end(); it++) {
        cout << it->first << " " << it->second << endl;
    }
  1. C++11
    map<string, int> mp;
    mp["张三"] = 20;
    mp["李四"] = 18;
    mp["王五"] = 30;
    for (auto it: mp) {
        cout << it.first << " " << it.second << endl;
    }
  1. C++17
    map<string, int> mp;
    mp["张三"] = 20;
    mp["李四"] = 18;
    mp["王五"] = 30;
    for (auto [key
    , val] : mp) {
        cout << key  << " " << val << endl;
    }

文档信息

Search

    Table of Contents