[英]QT & C++ : Passing 'const QString' discards qualifiers
我編寫了一個在STL中運行良好的循環,但是我一直在嘗試使用適當的QTL數據類型進行操作,這給了我錯誤:
error: passing 'const QString' as 'this' argument of 'QString& QString::operator=(char)' discards qualifiers [-fpermissive]
dic.at(i) = char(i);
我試圖運行的完整代碼是這樣的:
QVector <QString> dic ( 256 );
for(int i = 0; i < 256; i++)
{
dic.at(i) = char(i);
}
不太確定我需要在代碼中更新什么,有什么想法嗎?
QVector::at
是const
。 您要使用dic[i]
。
詳細信息:由於Qt的容器是寫時復制的,因此非const訪問器從本質上講更加昂貴,因為它們必須首先檢查是否需要復制基礎數據(並在必要時進行復制)。 因此,在Qt中, at(i)
會比operator[]
快。 可悲的是,這與STL相反,例如, std::vector<T>::at(i)
會進行邊界檢查,因此,它比std::vector<T>::operator[](i)
稍微貴一些std::vector<T>::operator[](i)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.