鍍金池/ 問答/ C++問答
臭榴蓮 回答

有沒有雙引號和去掉空格有什么關(guān)系?直接這樣就行了:str.replace(/\s/g,'')

strcmp了解一下,直接替換 key_compare_func

情已空 回答
  1. 小屋里既然收不到無線信號,那說明信號已經(jīng)很差了,再用WDS這種犧牲帶寬的技術(shù),即便能連上意義也不大,它的意義在于擴(kuò)大使用范圍而不是提升信號強度。
  2. 最簡單粗暴的方法就是拉網(wǎng)線。無線的坑其實挺多的。
  3. 172開頭的ip一般只有出故障時才會比較常見吧。一般內(nèi)網(wǎng)還是以192開頭居多,如果DHCP不夠分一般把掩碼開個口子就行了。
薔薇花 回答

decimal帶兩位小數(shù),更精準(zhǔn)一些

初念 回答
#include <iostream>
#include <string>
using namespace std;

int main() {
    string s("some string");
    if (s.begin() != s.end()) {
        auto it = s.begin();
        while (it != s.end()) {
            *it = toupper(*it);
            it++;
        }
        cout << s << endl;
    }
    return 0;
}

經(jīng)過評論區(qū)@zhenguoli 的提示改正了

墨染殤 回答

The statement:

    if(location > listSize++ || location < 1 )
        cout<<"Please enter correct value."<<endl;

can be considered like

    if(location > listSize || location < 1 )
    {
        ++listSize;
        cout<<"Please enter correct value."<<endl;
    }
    

From the C++ Standard (5.2.6 Increment and decrement)

1 The value of a postfix ++ expression is the value of its operand. [ Note: the value obtained is a copy of the original value —end note ]...

So, it will change listSize's value(because of ++listSize;), which is not you hope to see.

離夢 回答

看少俠這代碼,RoomBusiness這個類應(yīng)該是以單例模式寫的吧,所以兩種方法沒區(qū)別

不討囍 回答

你的中文編碼是UTF8的?如果是查看一下你對應(yīng)的要匹配的中文的UTF8編碼,然后在regex正則表達(dá)式中使用對應(yīng)的UTF8編碼匹配。

祈歡 回答

Bus error 表示程序要讀不可能存在的內(nèi)存地址,檢查mongod引用了什么so文件,編譯和執(zhí)行時的so文件要一樣。

妖妖 回答
  1. 邊插入邊排序:

    * 每次插入的復(fù)雜度是O(log n)
    * 總復(fù)雜度自然就是O(nlog n)
  2. 先插入后排序:

    * 不用說了...都知道O(nlogn)
    

所以從算法角度的話是一樣的。

不過邊插入邊排序的話一般肯定不會傻傻的單純用一個普通鏈表。如果考慮構(gòu)建一個堆之類的數(shù)據(jù)結(jié)構(gòu),構(gòu)建的復(fù)雜度是有可能到O(n)的

氕氘氚 回答

Digest翻譯過來是摘要,不是加密. 既然是摘要,也就不能解密的, 就象你不能用論文摘要還原整個論文一樣.
摘要的作用不是加密, 而是防篡改. 至于很多摘要算法用于密碼變形,則是完全的另一回事,不要看成是加密.

你好胸 回答

擁有純虛函數(shù)的類,是抽象類,不可以實例化對象;
純虛函數(shù)可以有函數(shù)體,對于使用的確是沒有意義,但是可以為子類實現(xiàn)這個純虛函數(shù)提供實現(xiàn)參考。

空痕 回答

a ? a : !a
a && a || !a
下次提問,講清楚了。。以下是修改問題后的答案。
b && a || !b && !a || a

貓小柒 回答
  1. A c(a) 會調(diào)用 A::A(const A&),是 A 的拷貝構(gòu)造函數(shù),它與控構(gòu)造函數(shù)一樣,如果不自定義,編譯器會自動生成一個。
  2. 使用花括號來初始化對象是 C++11 的標(biāo)準(zhǔn):

    1. 花括號調(diào)用構(gòu)造器會傾向于使用初始化列表構(gòu)造,被構(gòu)造會按照列表被填充;被構(gòu)造對象也可以選擇用 std::initializer_list 來捕獲這個列表。
      http://zh.cppreference.com/w/...
      例一,基本類型可以直接填充:int a{10}。
      例二,std::array 是一個結(jié)構(gòu)體,內(nèi)部是原生數(shù)組,也可以自動填充:std::array<int, 3> f3{1, 2, 3};。
      例三,std::vector 實現(xiàn)了 std::initializer_list 構(gòu)造:std::vector<int> v{10, 3}(得到長 2 的 vector,v[0] 是 10,v[1] 是 3)。
    2. 在上述情況匹配失敗的時候,不會得到編譯錯誤,而是會嘗試匹配類的構(gòu)造器,例如:std::vector<std::string> v{10, "hello"},會得到長度是 10 的 vector。因為與上面的例三對比,它匹配 vector(std::initializer_list<T>, const Allocator& alloc = Allocator()) 失敗了。
      http://zh.cppreference.com/w/...
    3. C++ 中 A a() 的作用往往出人意料,它不是用空參數(shù)構(gòu)造器構(gòu)造一個 A 類型的對象,而是聲明一個返回類型是 A,函數(shù)名是 a,并且函數(shù)參數(shù)列表空的函數(shù);期待的空參數(shù)構(gòu)造方式應(yīng)該是 A a。11 標(biāo)準(zhǔn)選取了 A a{},其作用與 A a 無異。

sort的第二個函數(shù)參數(shù)錯了

失魂人 回答

1) 看下這個https://benchmarksgame-team.p...,這個基本上Cpp無一落敗
2) 除了-O2外,還有-O3,還有其他的編譯參數(shù),請參見GCC手冊
3) JVM默認(rèn)是用空間換時間的,所以這么對比不是很適合

你的代碼,我在未優(yōu)化一行代碼的情況下,使用-O3來測試(實際上release都是-O3),運算3次都比Java快,這中間還包括加載程序啟動的時間,怎么得出結(jié)論會比java慢呢。

當(dāng)然,C++對程序員要求很高,不了解內(nèi)存模型、編譯原理什么的,是很難寫出高質(zhì)量的C++的,在這一點上,java就好很多

最近買了一個樹莓派3B+,特意跑了下這個程序,從性能上看,C++比java在Arm上略快,優(yōu)勢不明顯,另外寫了一個rust版本的代碼,算法上未優(yōu)化,性能跟C++接近,在release情況下比Java略快。

fn main() {
    let input_num=100001;
    let mut pp_count =0;
    for  each in 2..input_num {
        let mut factorization_lst=0;
        for  factor in 1..each+1 {
            if each%factor==0 &&!(factor>each/factor) {
                factorization_lst += 1;
            }
        }
        if factorization_lst==1
        {
            let mut antitone =0;
            let mut each_cpy =each;
            while each_cpy != 0
            {
                antitone=antitone*10+each_cpy%10;
                each_cpy/=10;
            }
            if antitone==each
            {
               pp_count += 1;
               println!("{}:{}", pp_count, each);
            }
        }
    }
}

從CPU上來,基本上在運行期這3個程序都是跑滿單核的(樹莓派3B+有4個core),但內(nèi)存上來看,C++和rust有明顯優(yōu)勢,大概為java版本的1/10.
這個測試從測試結(jié)果來看,這幾個語言的運行性能差異沒那么大,分析了下有幾個原因
1) 對于int數(shù)據(jù)類型,在java C++ rust里都是原生類型,原生的在計算時差別不大,對于java來說,如果是Integer可能有性能損耗。
2) 只跑了一個核,沒有多核之間的數(shù)據(jù)傳遞等
3) 沒有用到遞歸、值傳遞、引用傳遞、值拷貝等特性,差異不大。

結(jié)論: java是一個性價比比較好的語言,運行性能上或許不是最優(yōu),但開發(fā)效率很好,不像其他的語言要考慮跨平臺移植問題、編譯參數(shù)問題等。
PS 未來看好rust

黑與白 回答

let arr = [];
let arr2 = [];
for(let i = 0,j=0; i < arr.length; i++){

(j+1)*10 === i && j++
arr2[j].push(arr[i]);

}
瞎寫的