switch case 字串表示式支援

2022-06-02 10:33:16 字數 1231 閱讀 7061

根據業務需求,在編碼過程中,經常會遇到switch case表示式是字串的場景,現支援如下。

實現檔案

支援實現的檔案

1

#pragma once

23 #include 4 #include 5 #include 6

7namespace

prefab8;

1819 template<>

20struct fnv1a_constant21;25

26 template27 inline constexpr t fnv1a_hash(const tchar* const str, const t result = fnv1a_constant::offset)

2835

36 template37 inline constexpr t fnv1a_hash(std::size_t n, const tchar* const str, const t result = fnv1a_constant::offset)

3841

42 template43 inline constexpr t fnv1a_hash(const tchar(&str)[n])

4447

48 template49 inline constexpr auto hash(const tchar(&str)[n])

5053

54 template55 inline constexpr auto hash(t const&str)

5659 }

應用示例

1 #include "

hash.hpp"2

3 #include

4 #include 5

6void print(int index, std::string

value)710

11int

main()12)

1536}37

38return0;

39}4041

//result:

42/*

430 :: abc

441 :: kaizen

452 :: 2805

463 :: x64

47*/

good good study, day day up.

順序 選擇 迴圈 總結

解決switch case不能匹配字串的方法

以前寫 的時候,沒有考慮到效率的問題。if else if else if 寫了老長。如果資料量特別大的話,其實會影響到程式的效率。因為,if語句是從上到下乙個個判斷的,直到條件為真才退出。而switch case 則不是從上到下進行驗證的,因此效率要比if else高。可惜的是,switch ca...

解決switch case不能匹配字串的方法

以前寫 的時候,沒有考慮到效率的問題。if else if else if 寫了老長。如果資料量特別大的話,其實會影響到程式的效率。因為,if語句是從上到下乙個個判斷的,直到條件為真才退出。而switch case 則不是從上到下進行驗證的,因此效率要比if else高。可惜的是,switch ca...

為C 新增短字串的switch case支援

這篇文章描述了一種在c 中對短字串 長度為4以內 進行switch case操作的嘗試,如同整型值那樣,以此避免因字串匹配帶來的開銷,稍微提高執行效率。如大家所知,c 並不支援對字串 單字元還是支援的 做switch case的分支操作,因為switch的表示式只支援整型值或可轉化為整型值的型別。既...