向量字符串push_back在C 中不起作用
vector string push_back is not working in c++
此代码段接收字符串,定界符(空格)和向量为参数,并根据定界线将字符串分配,并将其存储在向量中。如果我使用push_back,则不会将任何内容存储到向量中,但是如果使用[]运算符,则可以将任何内容存储在矢量中。有人可以解释为什么push_back不起作用吗?
void split(const string & input,char delim,vector<string> & elems){
stringstream ss;
ss.str(input);
string item;
int i = 0;
while(getline(ss,item,delim)){
//elems.push_back(item);
elems[i] = item;
i++;
}
}
int main(){
char delim = ' ';
vector<string> item(2);
string input;
getline(cin,input);
split(input,delim,item);
}
如果您已经预先分配了一些大小(n)的向量,则推回(item)将项目放在索引n,并将矢量调整到更大的尺寸。如果您知道到期的字符串计数,则在分配大小n。
之后,应该使用elems[i] = item;
。如果您不知道计数,但是知道它将大于某些n,则不会预先分配。而是使用elems.reserve(n);
然后使用elems.push_back(item);
在main
函数中,请从
vector<string> item(2);
to
vector<string> item;
更改split
功能以使用push_back
:
void split(const std::string & input,char delim, std::vector<std::string> & elems){
std::stringstream ss;
ss.str(input);
std::string item;
int i = 0; // no more required unless for some other purpose
while(getline(ss,item,delim)){
elems.push_back(item);
//elems[i] = item;
i++; // no more required
}
}
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- C++Matching Brackets 2解决方案不起作用
- 为什么这段代码不起作用,我该如何解决?
- 我正在开发服务器,ip作为参数传递不起作用