Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm match_results::max_size() trong C++ STL

std::match_results::max_size() trả về số lượng match tối đa mà đối tượng match_results có thể chứa – giới hạn lý thuyết do allocator và kích thước con trỏ.

Đặc điểm

  • Trả về size_type (thường size_t).
  • Không tham số, không ném exception.
  • Giá trị rất lớn (thường ~2⁶³-1 trên 64-bit) – hiếm khi đạt giới hạn này.
  • Khác với size() – số match thực tế từ lần regex_search gần nhất.

Ví dụ

#include <iostream>
#include <regex>
using namespace std;

int main() {
    match_results<string::const_iterator> mr; // hoặc smatch (alias cho string)
    cout << "max_size: " << mr.max_size() << endl;

    string s = "abc123def456";
    regex re(R"(\d+)");
    regex_search(s, mr, re);
    cout << "Actual matches (size): " << mr.size() << endl; // 2
    for (auto& m : mr) cout << m.str() << ' '; // 123 456
    return 0;
}

Kết quả mẫu

max_size: 768614336404564650
Actual matches (size): 2
123 456

Lưu ý

  • match_results thường dùng qua alias: cmatch (const char*), smatch (string), wcmatch, wsmatch.
  • Được fill bởi regex_match, regex_search, regex_iterator.
  • max_size() chủ yếu dùng cho kiểm tra giới hạn lý thuyết, ít dùng trong code thực tế.