Jos*_*ega 4 c++ string algorithm binary search
string Haystack[] = { "Alabama", "Alaska", "American Samoa", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "District of Columbia",
"Florida", "Georgia", "Guam", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky",
"Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska",
"Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Northern Mariana Islands", "Ohio", "Oklahoma",
"Oregon", "Pennsylvania", "Puerto Rico", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "US Virgin Islands", "Utah",
"Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"};
string Needle = "Virginia";
if(std::binary_search(Haystack, Haystack+56, Needle))
cout<<"Found";
Run Code Online (Sandbox Code Playgroud)
如果我还想在字符串数组中找到针的位置,是否有一种"简单"的方法可以找到?
来自SGI文档:
请注意,这不一定是您感兴趣的信息!通常,如果您正在测试元素是否存在于某个范围内,您可能想知道它在哪里(如果存在),或者应该插入哪个元素(如果它不存在).功能
lower_bound,upper_bound并equal_range提供此信息.
我认为这组接口背后的原因是它binary_search并没有真正表明它是否会返回匹配范围的开始(假设有匹配)或范围的结束,并且你可能想要一个或另一个依赖是否要对容器中已存在的数据执行某些操作或添加新项目(可能在匹配范围的末尾).或者您可能希望将整个范围传递给其他东西.因此,执行二进制搜索的各种或多或少的特定接口.
不幸的是,如果你想,"我需要二元搜索例程",你不太可能找到其他的.