j的回溯只會(huì)影響搜索主循環(huán)次數(shù)的上下界([m, 2m]),而不會(huì)像你說(shuō)的使其變成m*n的關(guān)系。
你可以這樣理解,由于m是只增不減的,所以最壞的情況是這樣的:
- 每次匹配都會(huì)失敗(m保持不變)
- 再次匹配也失?。╩+1)
在這種情況下,對(duì)于M中的每個(gè)字符,實(shí)際上都比較了2次,所以一共執(zhí)行了2m次循環(huán)。這是循環(huán)次數(shù)的上限。其他任何情況,都至少有若干次循環(huán)是m直接+1的。
附上一張如何提問(wèn)的圖:
還是自己想出了辦法,這里的關(guān)鍵有兩點(diǎn):
1.渲染表情html代碼的時(shí)候,每個(gè)表情圖片的alt的屬性值放入對(duì)應(yīng)的config里面的text屬性值,形成如下所示代碼:
<img class="emoji" alt="哈哈" src="../static/emoji/1f604.png">測(cè)試測(cè)試<img class="emoji" alt="你懂的" src="../static/emoji/1f609.png"><img class="emoji" alt="你懂的" src="../static/emoji/1f609.png">
然后將該字符串的img字符串替換為表情字符,代碼如下:
let oldMsg = '<img class="emoji" alt="哈哈" src="../static/emoji/1f604.png">測(cè)試測(cè)試<img class="emoji" alt="你懂的" src="../static/emoji/1f609.png"><img class="emoji" alt="你懂的" src="../static/emoji/1f609.png">'
let newMsg = oldMsg.replace(/<img[^>]*>/g,(match)=>{
//截取alt里面的值,對(duì)應(yīng)數(shù)據(jù)字典里面的text屬性,可以遍歷到對(duì)應(yīng)的unicode碼(uft8)
let alt = match.split('" alt="')[1].split('" src="')[0]
let text = ''
for(let obj of EmojiUtil.config){
if(obj.text == alt){
text = obj.unicode
break
}
}
return text
})
console.log(newMsg)BaseClass *b = new BaseClass();
std::shared_ptr<BaseClass> test(b->getInstance());
這是bad practice, 雖然還不是UB, 但是只有一步之遙了, 比如加一個(gè)std::shared_ptr<BaseClass> test2(b->getInstance());就double delete了.
所以第一步要做的是把BaseClass *b = new BaseClass();修改成std::shared_ptr<BaseClass> b(new BaseClass);
到此結(jié)束了嗎? 不, 繼續(xù)噗:
std::shared_ptr<BaseClass> getInstance()
{
return std::shared_ptr<BaseClass>(this);
}
假設(shè)已經(jīng)做出上述修改了, 由于上段代碼的存在, 依舊會(huì)杯具. 原因和上面類似, 因?yàn)?code>test并不知道this已經(jīng)被b用過(guò)了, 所以引用計(jì)數(shù)就gg了. 你需要自己實(shí)現(xiàn)一個(gè)shared_ptr就能理解了.
使用std::enable_shared_from_this:
class BaseClass : enable_shared_from_this<S>
{
public:
BaseClass(){cout << "BaseClass construct" << endl;}
~BaseClass(){cout << "Base destructor" << endl;}
std::shared_ptr<BaseClass> getInstance()
{
return shared_from_this();
}
};
想進(jìn)一步了解可以去看enable_shared_from_this是如何實(shí)現(xiàn)的.
不存在disconstruct這種說(shuō)法, 跟我念: destructor
永遠(yuǎn)不要貼截圖(qq群里也一樣, 不通過(guò)markdown就用paste.ubuntu.
懶得打字這次我給你輸好了, 請(qǐng)貼近問(wèn)題描述中:
#include <iostream>
#include <memory>
using namespace std;
class BaseClass;
class ChildClass;
typedef std::shared_ptr<BaseClass> BaseClassPtr;
typedef std::shared_ptr<ChildClass> ChildClassPtr;
class BaseClass
{
public:
BaseClass(){cout << "BaseClass construct" << endl;}
~BaseClass(){cout << "Base destructor" << endl;}
std::shared_ptr<BaseClass> getInstance()
{
return std::shared_ptr<BaseClass>(this);
}
};
int main()
{
BaseClass *b = new BaseClass();
std::shared_ptr<BaseClass> test(b->getInstance());
cout << "end" << endl;
}
你應(yīng)該把這段代碼的鏈接發(fā)出來(lái), 一方面展示自己從哪里獲取的信息, 一方面挺想看是誰(shuí)寫(xiě)出這樣的代碼的.
這是針對(duì)另一位答主的, 語(yǔ)言沒(méi)有規(guī)定是heap, 只說(shuō)了是free store. 具體可以參見(jiàn)帝球此貼
這是一個(gè)c++的問(wèn)題, 不要貼c的標(biāo)簽, 完全兩門不搭界的語(yǔ)言.
http和https是兩個(gè)不同的協(xié)議。。http默認(rèn)就有了
而https是需要去購(gòu)買證書(shū)才行。。
在 Pair 中添加兩個(gè)方法,
Type1 &first() { return x; }
Type2 &second() { return y; }
返回引用,
因?yàn)槟愕脑椒ǚ祷氐氖?code>x與y的copy, 并沒(méi)有寫(xiě)到成員x,y中去.
這不小學(xué)問(wèn)題么,不知道你想問(wèn)什么,或者你覺(jué)得難的地方是什么。
已解決問(wèn)題。
這寫(xiě)的好亂啊,head頭指針保存數(shù)據(jù)嗎?head傳入?yún)?shù)要變?yōu)閏onst char…………infile是fstream流對(duì)嗎?read(unsigned char buf,int num);
t 也打錯(cuò)了
下載一個(gè)git,看看人家從初始項(xiàng)目到最后的每一步提交,從初始提交開(kāi)始研究別人的代碼。
最好結(jié)合別人提供的文檔
僅供參考
strcpy()是C標(biāo)準(zhǔn)函數(shù)。
該函數(shù)不會(huì)檢查數(shù)組越界的情況?。?!
已經(jīng)解決了,直接去github上面扒issue,原來(lái)是html-webpack-plugin版本問(wèn)題,我的環(huán)境下用v3.0.7就可以了(蛋疼的是為了更好地兼容webpack4,這個(gè)插件升級(jí)到v4后這個(gè)問(wèn)題又卷土重來(lái),但是應(yīng)該不影響項(xiàng)目運(yùn)行的,只好忽略)。
這只是消除了entrypoint = undefined的問(wèn)題,npm run dev后打包生成的js已經(jīng)通過(guò)html-webpack-plugin插入頁(yè)面,卻沒(méi)有執(zhí)行,因此現(xiàn)在頁(yè)面只有靜態(tài)資源被成功加載到。不過(guò)這是另一個(gè)問(wèn)題了,繼續(xù)研究。
前端工程化和自定義設(shè)置一定要謹(jǐn)慎,才能少挖點(diǎn)坑,解放生產(chǎn)力。
你是在Linux下嗎? Linux下之前我用過(guò)一個(gè)工具Valgrind,可以做內(nèi)存的優(yōu)化,錯(cuò)誤的檢查等,使用很簡(jiǎn)單,把你的debug版程序放在valgrind后面執(zhí)行就可以了,他會(huì)動(dòng)態(tài)收集程序執(zhí)行的信息供優(yōu)化和排錯(cuò),很有幫助。缺點(diǎn)就是你的程序執(zhí)行變的比較慢了。
https://blog.csdn.net/u010271...
這個(gè)例子中的result就是最后放結(jié)果的數(shù)組,順序有問(wèn)題的話,直接調(diào)用一下sort()方法,就是按照字母順序排列的數(shù)組了。
然后index訪問(wèn)result數(shù)組就是想要的結(jié)果。
1.動(dòng)態(tài)添加的dom元素肯定沒(méi)辦法綁定事件的
2.看你應(yīng)該是用vue寫(xiě)的,vue的思想就是不要直接操作dom。應(yīng)該要數(shù)據(jù)驅(qū)動(dòng),也就是說(shuō)你要添加dom。其實(shí)要添加的是數(shù)據(jù),所以你可以理解為你的配方列表是一個(gè)數(shù)據(jù),在模板里把這個(gè)數(shù)據(jù)渲染成dom。點(diǎn)擊添加的時(shí)候往這個(gè)數(shù)組里加一條數(shù)據(jù),dom自然就更新了
你貌似有一件事搞反了。
文件是ANSI編碼,這其實(shí)就是 Windows 的 System' local encoding 了。那么你從 ANSI 讀到 QString 的過(guò)程,不是 toLocal8Bit,而是 fromLocal8Bit。
搞明白這件事,亂碼問(wèn)題就迎刃而解了。
把
QString readLine = configFile.readLine();
改為:
QString readLine = QString::fromLocal8Bit(configFile.readLine());
把后面那些 toLocal8Bit 都給去掉就行了。
fscoket, 集成的 workman, 高端的 swoole
code里面有Beautify插件。
https://marketplace.visualstu...
安裝完 nvidia 驅(qū)動(dòng)后得做下面的事情
若操作失誤,你很可能在重啟之后無(wú)法進(jìn)入桌面。
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。