小编kyn*_*tto的帖子

为什么在基于范围的初始化程序中使用临时对象会导致崩溃?

为什么以下代码在Visual Studio和GCC上都崩溃了?

要使它崩溃,需要基于范围的for循环,std :: map,std :: string并引用字符串.如果我删除其中任何一个它将工作.

#include <iostream>
#include <string>
#include <map>
using namespace std;

struct S
{
    map<string, string> m;

    S()
    {
        m["key"] = "b";
    }

    const string &func() const
    {
        return m.find("key")->second;
    }
};

int main()
{
    for (char c : S().func())
        cout << c;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ideone链接:http://ideone.com/IBmhDH

c++ c++11

51
推荐指数
2
解决办法
3440
查看次数

即使根据capacity()仍有未使用的空间,std :: vector也可以将其数据移动到emplace_back()的另一个地址吗?

是否保证std::vector仅在size()==capacity()调用时移动其数据,push_back()或者emplace_back()否则也可以执行此操作?

c++ vector language-lawyer c++11

27
推荐指数
2
解决办法
910
查看次数

标签 统计

c++ ×2

c++11 ×2

language-lawyer ×1

vector ×1