相关疑难解决方法(0)

什么是移动语义?

我刚刚听完了Scott Meyers关于C++ 0x的软件工程电台播客采访.大多数新功能对我来说都很有意义,我现在对C++ 0x感到兴奋,除了一个.我仍然没有得到移动语义 ......它们究竟是什么?

c++ c++-faq move-semantics c++11

1614
推荐指数
11
解决办法
39万
查看次数

为什么std :: vector :: data和std :: string :: data不同?

Vector的新方法data()提供了const和非const版本.
但是string的data()方法只提供const版本.

我认为他们改变了措辞,std::string以便现在要求chars连续(比如std::vector).

当时std::string::data只是错过了什么?或者是一个很好的理由只允许const访问字符串的底层字符?

注意:std::vector::data有另一个很好的功能,调用data()空向量不是未定义的行为.尽管&vec.front()是不确定的行为,如果它是空的.

c++ standards c++11

33
推荐指数
1
解决办法
4544
查看次数

C++ 11移动构造函数


考虑以下类,实现移动构造函数的正确方法是什么:

class C {
public:
    C();
    C(C&& c);
private:
    std::string string;
}
Run Code Online (Sandbox Code Playgroud)

当然,这个想法是避免复制string或解除分配两次.
让我们假设基本的例子只是为了清晰,我确实需要一个移动构造函数.


我试过了:

C::C(C&& c) {
    //move ctor
    string = std::move(c.string);
}
Run Code Online (Sandbox Code Playgroud)

C::C(C&& c) : string(std::move(c.string)) {
    //move ctor
}
Run Code Online (Sandbox Code Playgroud)

两者都在gcc 4.8上编译正常并运行良好.这似乎选项A是正确的行为,string被复制,而不是使用选项B.移动
这是正确执行的举动构造的?

c++ move-semantics c++11

26
推荐指数
2
解决办法
1万
查看次数

将字符串移动到矢量

有没有办法内容从std :: string移动到std :: vector?我认为现在在语言中使用rvalue-references,这个操作有时非常有用.

c++ string vector c++11

5
推荐指数
1
解决办法
1832
查看次数

标签 统计

c++ ×4

c++11 ×4

move-semantics ×2

c++-faq ×1

standards ×1

string ×1

vector ×1