c++ - 更快地交换或分配字符串 vector ?

标签 c++ string vector swap

我有一个包含字符串 vector 的类和一个分配给该 vector 的函数。我正在更改我的功能,以便仅在成功时才分配给 vector 。为此,我在函数中使用了一个临时字符串 vector ,然后如果函数成功,我将分配给类中的字符串 vector 。

例如:

class test
{
    vector<string> v;
    void Function()
    {
        vector<string> temp;
        v = temp; // Is this better?
        v.swap( temp ); // Or instead is this better?
    }
};

最佳答案

在 C++11 中,移动它:

v = std::move(temp);

在古老的方言中,交换比复制分配更好(假设 vector 不是空的,就像您的示例中那样)。

移动或交换只需要修改几个指针,而复制则需要内存分配和其他昂贵的恶作剧。

关于c++ - 更快地交换或分配字符串 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22001854/

相关文章:

c++ - xerces c++ 和 cmake

c++ - 在 C++ 中对结构进行排序

c++ - 将带有重音符号的 Unicode 字母转换为 ASCII/UTF8

arrays - 如何在 MATLAB 中从字符串创建数值数组?

java - Java 中的特殊字符\0 {NUL}

c++ - vector<auto_ptr<>> 的编译问题

C++ Eigen : dynamic tensor

c++ - c+ +'s ` const` promise 有什么好处?

android - 可绘制矢量大小调整不正确

c++ - 为什么在初始化和调整对象 vector 大小时调用析构函数?