字符串::分配在字符串向量中不起作用
string::assign doesn't work in vector of strings
为什么这个程序崩溃?它在线路vec[0].assign("blabla");
:上崩溃
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> vec;
vec.reserve(5);
vec[0].assign("blabla");
}
或者这个:
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> vec;
vec.reserve(5);
vec[0].push_back('a');
}
如果真的不起作用,最好用什么代替?
vector<string> vec;
vec.reserve(5);
vec[0].assign("blabla");
这会导致未定义的行为。vec[0]
已被保留但未分配。您应该使用push或template。
vector<string> vec;
vec.reserve(5);
vec[0].push_back('a');
同样的错误。您正在推送内存中尚未存在的vec[0]
。
解决方案:
vector<string> vec;
vec.reserve(5);
vec.emplace_back("blabla"); //or push_back
或者:
vector<string> vec;
vec.resize(5);// Notice resize not reserve
vec[0].assign("blabla");//this works now since vec[0] is exist
或者:
vector<string> vec;
vec.resize(5);// Notice resize not reserve
vec[0].push_back('b'); //this works now since vec[0] is exist
我确实NOT更喜欢第二个选项,因为它导致构造N次,然后分配N次
相关文章:
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 尝试使用C++中的模板进行BST排序,但在使用随机字符串进行测试时不起作用
- boost::spirit::x3 中的简单字符串解析器不起作用
- 用于拆分空格字符串的程序不起作用
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- C++11+=当RHS有多个字符串或字符时,运算符不起作用
- 将字符从一个字符串简单分配到另一个字符串不起作用
- 从中间器转换字符串不起作用,出了什么问题?
- C++字符串不起作用
- 如何获取链表中的所有"next"节点?构建调用字符串不起作用
- 布尔表达的字符串不起作用
- Rapidjson 输出到字符串不起作用
- 为什么写入我的字符串不起作用
- 在 qt 中比较字符串不起作用
- 对于字符串不起作用的循环
- 通过引用字符 2 维调用字符串不起作用
- C++ cout 字符串不起作用.请指教
- C++if语句比较字符串不起作用
- glutBitmapString/glutStrokeString似乎需要常量无符号字符* - 字符串不起作用
- Arduino 子字符串不起作用