鍍金池/ 問答/ C++問答
寫榮 回答

httphttps是兩個不同的協(xié)議。。
http默認(rèn)就有了
https是需要去購買證書才行。。

尕筱澄 回答

這樣寫

from PyQt5.QtCore import QThread ,  pyqtSignal,  QDateTime , QObject
from PyQt5.QtWidgets import QApplication,  QDialog,  QLineEdit
import time
import sys

class BackendThread(QObject):
    # 通過類成員對象定義信號
    update_date = pyqtSignal(str)
    
    # 處理業(yè)務(wù)邏輯
    def run(self):
        while True:
            data = QDateTime.currentDateTime()
            currTime = data.toString("yyyy-MM-dd hh:mm:ss")
            self.update_date.emit( str(currTime) )
            time.sleep(1)

class Window(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        self.setWindowTitle('PyQt 5界面實時更新例子')
        self.resize(400, 100)
        self.input = QLineEdit(self)
        self.input.resize(400, 100)
        self.initUI()

    def initUI(self):
        # 創(chuàng)建線程
        self.backend = BackendThread()
        # 連接信號
        self.backend.update_date.connect(self.handleDisplay)
        self.thread = QThread()
        self.backend.moveToThread(self.thread)
        # 開始線程
        self.thread.started.connect(self.backend.run)
        self.thread.start()

    # 將當(dāng)前時間輸出到文本框
    def handleDisplay(self, data):
        self.input.setText(data)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = Window()
    win.show() 
    sys.exit(app.exec_())
初念 回答

我沒有親自實驗?zāi)愕膯栴},但是以前遇到過類似問題。
你自己編譯的protobuf的庫,編譯后的安裝目錄和cygwin的庫目錄是不一樣的,你的庫可能安裝到了/usr/local之類的目錄下面,但是cgywin的庫默認(rèn)都在/usr/bin下面,就像這樣:

clipboard.png

所以你在安裝的時候可能要改下路徑?;蛘撸愀南履阋幾g的那個庫的CMakeLists.txt,讓他去鏈接到你的protobuf的安裝目錄(比如/usr/local/...)

希望可以幫到你

鐧簞噯 回答

你可能忘記了mybatis的xml文件可以寫ResultMap這個東西

多表查詢之后 結(jié)果映射到ResultMap里

敢試 回答

我將源代碼進(jìn)行了修改的 ,可以參考如下代碼 :

#include <iostream>
#include <cstdlib>

//前置聲明只能充當(dāng)?shù)淖饔?: 
//1.定義一個指向該類型的指針和引用
//2.在不完全類型期間只能充當(dāng)函數(shù)聲明的的參數(shù)類型
class Date;   

class Time   
{
public:
    Time(int h, int m, int s): hour(h) , minute(m) , second(s){}; 
    ~Time(){};
    void displayTime(Date&);  // 錯誤C2061    
private:
    int hour;
    int minute;
    int second;
   
};

class Date    
{
public:
    Date(int y, int m, int d): year(y) , month(m) , day(d){};
    ~Date(){}
    friend void Time::displayTime(Date &); //錯誤C2245
private:
    int year;
    int month;
    int day;
};


//最后定義clear函數(shù)
void Time::displayTime(Date& date){
    std::cout <<date.year<<std::endl;
}
 
int main(){
    Date date(1,2,3);
    Time time(4,5,6);
    time.displayTime(date);
    return EXIT_SUCCESS;
}

下圖是成員函數(shù)充當(dāng)友元函數(shù)的操作順序 , 參考《C++ primer 第五版》 總結(jié)出的圖 :
注意 : 其中的 Window_mgr 等價 Time 類 , Screen類等價Date類
圖片描述

柒喵 回答

這個需求就比較迷吧,有時候應(yīng)該換下思路,哪怕在操作上麻煩了一步,自己解決了,換個思路在最后這里

舊酒館 回答

你是在Linux下嗎? Linux下之前我用過一個工具Valgrind,可以做內(nèi)存的優(yōu)化,錯誤的檢查等,使用很簡單,把你的debug版程序放在valgrind后面執(zhí)行就可以了,他會動態(tài)收集程序執(zhí)行的信息供優(yōu)化和排錯,很有幫助。缺點就是你的程序執(zhí)行變的比較慢了。

嫑吢丕 回答

應(yīng)該是14,并且我跑了下你代碼,是14

乖乖瀦 回答

寬的可能是用meta標(biāo)簽設(shè)置的,窄的可能是知乎自己寫的

孤星 回答

因為你 router.post('login', function(res, req, next) ) 寫反了,按照規(guī)則是 req 在前,res 在后。

撿肥皂 回答

c++版藥丸...一天都沒人回答...果然沒什麼人留下來了...回答的答案也沒有人搭理...

它已經(jīng)提示你了嘛, 你的字符串"朱明"的類型是const char*, 至於爲(wèi)什麼是這個類型呢?

因爲(wèi)c++的string literal("朱明")是不可修改, 從c++11開始就只能用以下兩種方法聲明了:

  • const char* str = "朱明";
  • const str指向具體實現(xiàn)中的text segment, const保護(hù)了此數(shù)據(jù)`

or

這兩者的目的都是爲(wèi)了保證text segment中的數(shù)據(jù)不被修改. 原因窩在註釋中解釋了.

如果你的形參(parameter)是char *, 那麼傳進(jìn)來的參數(shù)不就有了被修改text segment(這裏是string literal)"朱明")的危險, 所以爲(wèi)了安全期間, c++11開始ban了這樣的方式,

當(dāng)然, 你可能會有這樣的亦或:

窩明明形參(parameter)的類型是char[]不是char*呀.

其實呢, 這該c背鍋, c風(fēng)格的字符串在c++裏面不是一等公民, 或者說first-class, (這裏有人會誤解或者說是因爲(wèi)字符串或者函數(shù)他們不是base type, 而是derived type, 所以不能做到傳值, 不, 不是這樣的, struct同樣是derived type, 它就能傳值, derived type僅僅是composite typealias, 和first-class是無關(guān)的.

換而言之, 它不能作爲(wèi)參數(shù)傳遞, 再換而言之, 它不能在傳參時進(jìn)行深拷貝, 它能做的只是傳指針, 同樣的道理, 如果你想將函數(shù)傳遞, 在c語法裏面也只能傳函數(shù)指針, c++11開始能用struct來模擬lambda實現(xiàn)真正傳遞函數(shù)的功能.

好, 饒了一圈, 回答剛剛那個問題, 現(xiàn)在你應(yīng)該明白了, 你這裏的形參char[]不得不退化成char*了, 其實vs的提示也暗示你這個信息了. 你的解決辦法有這麼幾種:

  1. 只用std::string/std::wstring
  2. 形參: 改成const char*/char const *

其實很早以前人們就發(fā)現(xiàn)text segment在這種情況下被修改會很危險, 但是c這貨一直不高興寫進(jìn)標(biāo)準(zhǔn)來規(guī)定, 不過posix倒是弄了個strdup(3), 然後c才也跟著糊了個出來, 貌似posix不嚴(yán)格要求帶error code, 後來把may改成shall了. 那麼cppreference的表述就出錯了...或許窩該去改下cppreference...更新: 改好了...

所以跟我大聲唱:

Pointer is shit, C is shit.

Update:

補充下標(biāo)準(zhǔn)中(n4741)的wording:

clipboard.png

diff在這裏可以看到
http://www.open-std.org/jtc1/...

柚稚 回答

個人理解空間復(fù)雜度為O(1)的歸并排序是指內(nèi)存方面的空間復(fù)雜度,而忽略了堆棧里的O(logN)的空間復(fù)雜度(畢竟不在同一個空間)

//空間復(fù)雜度為O(1)的歸并排序
#include <iostream>
using namespace std;

void reverse_array(int a[], int n) {
    int i = 0;
    int j = n - 1;
    while (i < j) {
        swap(a[i], a[j]);
        ++i;
        --j;
    }
}

void exchange(int a[], int length, int length_left) {
    reverse_array(a, length_left);
    reverse_array(a + length_left, length - length_left);
    reverse_array(a, length);
}

void Merge(int a[], int begin, int mid, int end) {
    while (begin < mid && mid <= end) {
        int step = 0;
        while (begin < mid && a[begin] <= a[mid])
            ++begin;
        while (mid <= end && a[mid] <= a[begin]) {
            ++mid;
            ++step;
        }
        exchange(a + begin, mid - begin, mid - begin - step);
    }
}

void MergeCore(int a[], int left, int right) {
    if (left < right) {
        int mid = (left + right) / 2;
        MergeCore(a, left, mid);
        MergeCore(a, mid + 1, right);
        Merge(a, left, mid + 1, right);
    }
}

void MergeSort(int a[], int length) {
    if (a == NULL || length < 1)
        return;
    MergeCore(a, 0, length - 1);
}

int main() {
    int a[] = {1,0,2,9,3,8,4,7,6,5,11,99,22,88,11};
    int length = sizeof(a) / sizeof(int);
    MergeSort(a, length);
    
    for (int i = 0; i < length; i++)
        cout << a[i] << " ";
    cout << endl;
    return 0;
}
櫻花霓 回答

引用傳值

$items 循環(huán)改變的是自身

比如第一次循環(huán)引用傳值變成了 $arr, 第二次循環(huán)也就是循環(huán)的$arr,就等于當(dāng)前循環(huán)的數(shù)組沒每循環(huán)一次,初始數(shù)據(jù)都是上一次循環(huán)的結(jié)果。

第一次變成這樣 以此類推

$arr=[
  [
      "id"=>1,
      "pid"=>0,
      "name"=>'北京市',
      "son"=>[
          [
              "id"=>3,
              "pid"=>1,
              "name"=>"海淀區(qū)"
          ]
      ]
  ],
  [
      "id"=>1,
      "pid"=>0,
      "name"=>'黑龍江省',
  ]
];

幼梔 回答

你可以用一個 臨時指針來指向 有空間的那個指針 做++--操作,一般都是這樣的

九年囚 回答

undefined是php沒有接收到POST數(shù)據(jù),但是你頁面上已經(jīng)提交了數(shù)據(jù),這時候注意檢查你的“請求頭”信息是否正確,

何蘇葉 回答

c++中的at(x, y) 仍然將x, y轉(zhuǎn)換為int, 即取矩陣指定行列的值, 與python中常用的flow[x, y]相同, 但不知為什么c++和python的結(jié)果偏差很大, 或者是因為python的值轉(zhuǎn)換為int類型的關(guān)系??

做不到 回答
  1. 以追加寫的方式打開output.txt。

  2. out.open((char *)"output.txt", ios::app | ios::out);

心沉 回答

首先c語言沒有sort函數(shù),請你搞清楚c和c++的區(qū)別,這是兩個語言(雖然后者可以部分兼容前者)
<iostream><string><algorithm>這三個頭文件是c++的,sort在<algorithm>里定義。
還有問題標(biāo)簽又帶了個java,不知道你這是在干嘛

然后我這里運行沒有問題
輸出結(jié)果是:

(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278
(2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000
(1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000
(1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278
(2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000
(1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278

建議檢查編譯環(huán)境

巴扎嘿 回答

恭喜你, 遇到了一個編譯器的bug
這是gcc以前的一個bug: https://gcc.gnu.org/bugzilla/...
可能5.0以后才修好了.
clang也有類似的bug: https://bugs.llvm.org/show_bu... 里面的解釋值得一讀, 我節(jié)選下:

template<typename T> T end(T);

template <typename T>
void Foo() {
  T it1;
  if (it1->end < it1->end) {
  }
}

Foo() is trying to use a public member variable of "*it1". Because there's a global template with the same name, it interprets the subsequent '<' as starting a template instantiation, and then finds trouble many tokens later when there's no matching '>'.

  1. possible fixit is to add parentheses around "it1->end".