QT& C ++:传递' const QString'丢弃限定符

时间:2014-06-24 03:05:00

标签: c++ qt const

我写了一个在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);
}

我不太确定我的代码需要更新什么,有什么想法吗?

1 个答案:

答案 0 :(得分:9)

QVector::atconst。您想使用dic[i]

详细信息:由于Qt的容器是写时复制的,因此非const访问器本质上更昂贵,因为他们必须首先检查是否需要复制基础数据(并在必要时复制它)。因此,在Qt中,at(i)将比operator[]更快。遗憾的是,这与STL相反,例如,std::vector<T>::at(i)确实会检查边界,因此比std::vector<T>::operator[](i)略贵。