【发布时间】:2014-04-15 19:02:18
【问题描述】:
我正在尝试确定从 std::string 构造 QVariant 并让它存在于 std::vector 中的最有效方法。我目前正在做:
std::string foo = "test";
std::vector<QVariant> variants;
...
variants[0] = QString::fromStdString(foo);
这种方法似乎构造了一个临时的 QString,然后在调用 QVariant(const QString &) c'tor 后将其销毁。
有什么方法可以避免临时 QString?
【问题讨论】:
-
variants.emplace(QString::fromStdString(foo)),variants.push_back(QString::fromStdString(foo))? -
那个临时字符串的数据实际上是活得很好——它的私有数据存在于变体中。被销毁的临时对象是一个非常轻量级的外壳。