谁能告诉我为什么会出现这种段错误?
vector<string> vec;
for (int i = 0; i < 1000000; /* 1 million */ i++) {
vec.push_back("string"+i);
}
使用g++
-std=c++14
中编译
答案 0 :(得分:4)
正如panta-rei正确指出的那样,看起来你正试图包含一个形式的字符串
"string" + string form of (i)
但你实际上做的是指针运算,在这种情况下是不合逻辑的(你只是从某个位置传递一个指针递增i
- 谁知道那个存储器里有什么?)。
为了做你想做的事,你可以使用std::to_string
,它会将i
翻译成一个合适的C ++字符串。添加了一个带有is OK的C风格字符串。
将您的行更改为
vec.push_back("string"+to_string(i));
答案 1 :(得分:2)
vector<string> vec;
for (int i = 0; i < 1000000; i++) {
vec.push_back("string" + to_string(i));
}
这不是PHP ...