C++ Logo

std-proposals

Advanced search

Re: [std-proposals] A draft for modern switch

From: Zhihao Yuan <zy_at_[hidden]>
Date: Tue, 20 May 2025 17:28:47 +0000
Are you looking for https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3627.html ?

--
Zhihao Yuan, ID lichray
The best way to predict the future is to invent it.
_______________________________________________
On Tuesday, May 20th, 2025 at 4:38 AM, Zhao YunShan via Std-Proposals <std-proposals_at_[hidden]> wrote:
> 
>     In C++, the `switch` statement is a fundamental control-flow construct originally designed to work only with integer types (`int`, `char`, `enum`, etc.). However, in real-world development, programmers often need to handle string-based (`std::string`) branching logic. While the standard syntax does not natively support strings, well-structured design patterns can still leverage `switch`-like behavior to replace lengthy `if...else if` chains, significantly improving code readability and conciseness.
> 
> #include <iostream>
> #include <string>
> int main()
> {
>     std::string router;
>     switch (router)
>     {
>     case "cpp":
>         std::cout << "cpp router selected.";
>         break;
>     case "hpp":
>         std::cout << "hpp router selected.";
>         break;
>     default:
>         std::cout << "Unknown router type.";
>         break;
>     }
>     return 0;
> }
> 
> 
> 
> By leveraging compile-time static analysis, `switch` statements can be optimized into various efficient data structures:
> 
> 
>     Jump tables for few cases,
>     Balanced binary search for many branches,
>     Hash tables where supported.
> 
> This ensures optimal time complexity (O(1) to O(log n)) even with large branch sets.

Received on 2025-05-20 17:29:01