簡體   English   中英

字符數組的 std::binary_search 奇怪問題

[英]std::binary_search curious issue with char array

所以我為了好玩而實現了一個 rot13

const char lower[] = "abcdefghijklmnopqrstuvwxyz";

int main() {
    char ch = 'z';

    if (std::binary_search(std::begin(lower), std::end(lower), ch)) {
        std::cout << "Yep\n";
    } 
    else {
        std::cout << "Nope\n";
    }
}

這輸出不。 任何其他字符輸出是。

請注意,除非為空(因為它以 '\0' 結尾),否則 c 字符串的排序不會增加。 如果你修復它以傳遞前面的迭代器(指向過去的 'z',而不是 '\0'),它可以工作:

#include <iostream>
#include <algorithm>

const char lower[] = "abcdefghijklmnopqrstuvwxyz";

int main() {
    char ch = 'z';
    if (std::binary_search(std::begin(lower), std::end(lower) - 1, ch)){
        std::cout << "Yep\n";
    } else {
        std::cout << "Nope\n";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM