鍍金池/ 問答/ C++問答
懶洋洋 回答

你的問題解決了嗎?
解決了和我說一下怎么解決的好嗎,1365413148@qq.com我的郵箱,萬分感謝

憶往昔 回答

這是要實(shí)現(xiàn)正則表達(dá)式的部分匹配功能。如果只是要代碼可以搜索下相關(guān)提供的函數(shù)。
自己實(shí)現(xiàn)的話可以用遞歸,一個(gè)指向目標(biāo)串,一個(gè)指向匹配串,依次同時(shí)加1,或單向加1,一直到失敗或匹配完成為止。有點(diǎn)類似kmp或者a*的方式吧。

敢試 回答

我這里把 void main() 改成 int main() 之后可以編譯通過。

如果你編不過,你試把 "new A()" 改為 new A;

空白格 回答

注釋里面不是提示了嗎?大小為 returnSize 的數(shù)組,下面函數(shù)的返回值也明確了是一個(gè) int 類型的指針,這個(gè)指針指向一個(gè)長度為 returnSize 的 int 數(shù)組。

簡而言之,你要在返回之前,設(shè)置好 *returnSize 的值,返回的是你自己 malloc 的數(shù)組

不討囍 回答

1.這種不需要用遞歸,用do-while就行
2.答案是合法的,但是你的理解是錯(cuò)誤的

因?yàn)楫?dāng)不合法的時(shí)候,return 保留執(zhí)行(沒有立即執(zhí)行),當(dāng)合法的時(shí)候,立即執(zhí)行 return ,函數(shù)在return后立即終止,不會(huì)再去執(zhí)行之前未執(zhí)行的 return …

return只會(huì)終止當(dāng)前調(diào)用,不會(huì)終止父調(diào)用,所以return會(huì)一直執(zhí)行

痞性 回答

有沒有嘗試用Bus呢?
用法如下

//假設(shè) bb 組件里面有個(gè)按鈕,點(diǎn)擊按鈕,把 123 傳遞給 aa 組件
// 根組件(this.$root)
new Vue({
 el: '#app',
 router,
 render: h => h(App),
 data: {
  // 空的實(shí)例放到根組件下,所有的子組件都能調(diào)用
  Bus: new Vue()
 }
})

bb 組件內(nèi)調(diào)用事件觸發(fā)↓
<button @click="submit">提交<button>

methods: {
  submit() {
   // 事件名字自定義,用不同的名字區(qū)別事件
   this.$root.Bus.$emit('eventName', 123)
  }
 }


aa 組件內(nèi)調(diào)用事件接收↓
 // 當(dāng)前實(shí)例創(chuàng)建完成就監(jiān)聽這個(gè)事件
 created(){
  this.$root.Bus.$on('eventName', value => {
   this.print(value)
  })
 },

 methods: {
  print(value) {
   console.log(value)
  }
 },

 // 在組件銷毀時(shí)別忘了解除事件綁定
 beforeDestroy() {
   this.$root.Bus.$off('eventName')
 },

As what @felix said in comments: this is BinarySearchTree const * in template <typename T> bool BinarySearchTree<T>::contains(const T& x) const whereas it is BinarySearchTree* in bool contains(const T& x, BinaryNode<T>* rt);

Apparently, it is not allowed to pass BinarySearchTree const* to BinarySearchTree*(this is a implicit parameter in member function), so you can nerve call non-const-qualifier member function from const-qualifier member function.

solution 1:

template <typename T>
bool BinarySearchTree<T>::contains(const T& x) const {
    return const_cast<BinarySearchTree *>(this)->contains(x, root);
}

But this solution will cause undefined behaviour, so another solution is here

This answer may also help you

伴謊 回答
  1. 關(guān)于數(shù)據(jù)錯(cuò)誤的問題。數(shù)據(jù)錯(cuò)誤是由于axios的post方法和jQuery帶的參數(shù)在HTTP請求里的位置不一樣,這就導(dǎo)致了一些服務(wù)器解析不到你請求中帶上的參數(shù)就報(bào)錯(cuò)了;
  2. qs并不是在data里使用的,正確的方法應(yīng)該是
axios({
    url: yourUrl,
    data:data,
    method: 'POST',
    transformRequest:[function(data){
        return qs.stringify(data)
    }]
})
失魂人 回答

第一種語境下,a(i);是一個(gè)語句(statement),此時(shí)編譯器會(huì)把它解析成變量聲明,由此局部變量i與函數(shù)參數(shù)重名。

根據(jù)語法,它可以被解釋成函數(shù)式顯式類型轉(zhuǎn)換或者聲明,存在二義性。標(biāo)準(zhǔn)約定將其解釋成聲明。

9.8.1 There is an ambiguity in the grammar involving expression-statements and declarations: An expression statement with a function-style explicit type conversion (8.2.3) as its leftmost subexpression can be indistinguishable from a declaration where the first declarator starts with a (. In those cases the statement is a declaration.

你給出的第二種語境下,a(i)是ctor-initializer,不存在表達(dá)式、聲明二義性。

絯孑氣 回答

檢查open函數(shù)的返回值,看看是否打開成功

空白格 回答

decltype(*t1)的結(jié)果不是函數(shù),而是函數(shù)引用,這是因?yàn)?t1返回一個(gè)lvalue,對于lvalue,decltype返回引用類型。
也就是說,不是

void()

而是

void (&) ()

由于是引用,is_function自然不能生效。使用remove_reference去除這個(gè)引用即可。

#include <iostream>
#include <type_traits>
#include <typeinfo>
void test1() {}
typedef void TEST();

int main()
{
        TEST* t1 = test1;
        std::cout << std::is_reference<decltype(*t1)>::value << std::endl; //1
        std::cout << std::is_function<std::remove_reference<decltype(*t1)>::type>::value << std::endl; // 1
                        
        return 0;
}
胭脂淚 回答

在編譯時(shí)加上參數(shù)就行了

    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- 
焚音 回答

public class test {
public static List> source;

public static void main(String[] args) {

source = new ArrayList<>();

List<String> a = new ArrayList<String>();
a.add("黑色");
a.add("白色");
List<String> b = new ArrayList<String>();
b.add("64G");
b.add("128G");
List<String> c = new ArrayList<String>();
c.add("中國聯(lián)通");
c.add("中國移動(dòng)");
source.add(a);
source.add(b);
source.add(c);
ArrayList<String> result = new ArrayList<>();
recursion(result, source.get(0), 0, "");
System.out.println(result);

}

public static void recursion(List<String> result, List<String> para, int num, String choose) {

for (int i = 0; i < para.size(); i++) {
    if (source.size() == num + 1) {
        result.add(choose + "/" + para.get(i));
    } else {
        recursion(result, source.get(num + 1), num + 1, choose + "/" + para.get(i));
    }
}

}
}

莫小染 回答

時(shí)間復(fù)雜度是表示時(shí)間增長的趨勢啊...

把前后兩部分拆開來看
N! 和 2^n
誰的增速大就是誰

空痕 回答

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

詆毀你 回答

怎么搞你不是已經(jīng)說得清楚了么,難點(diǎn)在哪,只能自己慢慢調(diào)試吧?無非就是取值,比對,對滿足計(jì)算條件的情況進(jìn)行計(jì)算。不滿足直接pass掉咯。

情殺 回答

可以用正則轉(zhuǎn)換
如圖, 點(diǎn)擊一下 "使用正則表達(dá)式"
圖片描述

上面輸入([a-z]+)n*替換欄輸入'$1', (包括引號和空格)
最后一個(gè)(z)的逗號不好替換, 可以再處理

情皺 回答

沒有好的方法的,c++的枚舉就是一個(gè)簡單類型,不含名字等信息,用if else吧,如果這個(gè)枚舉很大,倒是可以考慮先做一個(gè)map,加快執(zhí)行效率,但只有三個(gè)枚舉項(xiàng),差別不大。

荒城 回答

想到兩個(gè)方法:

方法一:
如果是比較新的內(nèi)核版本3.9以上,支持SO_REUSEPORT,那么你可以:

  1. 啟動(dòng)一個(gè)新的進(jìn)程,也監(jiān)聽相同的端口。
  2. 新的進(jìn)程啟動(dòng)后給老的進(jìn)程發(fā)個(gè)信號。
  3. 老的進(jìn)程收到后停止接收新的連接請求(停止Accept,關(guān)閉Listen Socket),
    等所有已經(jīng)存在的連接處理完自動(dòng)退出。

如果不支持SO_REUSEPORT,不同進(jìn)程無法同時(shí)監(jiān)聽同一個(gè)端口,則需要在老的進(jìn)程內(nèi)fork一個(gè)子進(jìn)程,并且把負(fù)責(zé)監(jiān)聽的文件描述符傳給新進(jìn)程。
這個(gè)方法可以實(shí)現(xiàn)你的需求,但需要比較多的修改Golang封裝的net/http等系統(tǒng)庫,技術(shù)復(fù)雜度比較高。
好處是不需要nginx參與,對它透明。

方法二:
可以同時(shí)運(yùn)行兩個(gè)或更多個(gè)http server,同時(shí)提供服務(wù),讓nginx做負(fù)載均衡,其中有一個(gè)需要升級重啟時(shí),就發(fā)個(gè)信號,收到信號后停止接收新請求,已有請求處理完畢正常退出就可以了。這個(gè)過程不需要修改nginx配置,也不需要reload nginx。
這個(gè)方法也需要改Golang封裝的net/http,但修改量相比方法一會(huì)小很多。