vector string push_back is not working in c++(向量字符串 push_back 在 C++ 中不起作用)
问题描述
This code snippet receives string, delimiter(space) and vector as argument and splits the string according to delimiter and stores it in vector. It is not storing anything into vector if i use push_back but works if i use [] operator. Can someone explain why push_back is not working?
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);
}
If you've pre-allocated the vector with some size (n), then pushback(item) puts item at index n and resizes the vector to an even larger size. If you know the string count due in, then you should use elems[i] = item;
anyway after an allocation of size n.
If you don't know the count coming in, but know it's going to be larger than some n, do not pre-allocate. Instead, RESERVE some memory with elems.reserve(n);
Then use elems.push_back(item);
这篇关于向量字符串 push_back 在 C++ 中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:向量字符串 push_back 在 C++ 中不起作用
- “纯虚函数调用"在哪里?崩溃从何而来? 2022-10-18
- 打印扩展的ASCII字符 1970-01-01
- C++浮点常数 1970-01-01
- 使用来自float.h和limits的数据,找到该系统的一些 1970-01-01
- C++指向数组的指针 1970-01-01
- 使用最流行的转义序列 1970-01-01
- C语言求模 1970-01-01
- 运算符优先级 1970-01-01
- 使用整数值初始化char类型的变量 1970-01-01
- C语言可使用的所有转义序列 1970-01-01