根據業務需求,在編碼過程中,經常會遇到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的表示式只支援整型值或可轉化為整型值的型別。既...