pop_back来自向量的元素
Pop_back an element from a vector
我想输入一个字符串,然后将整数输入两个单独的向量,一个用于字符串,一个用于整数。
如果输入的字符串已经存在于字符串中的向量中,我想删除最后一个字符串输入的字符串。
while (std::cin >> tempName >> tempScore)
{
if (tempName != "NoName" && tempScore != 0)
{
for (int i = 0; i < names.size(); i++)
{
if (tempName == names[i])
{
std::cout << "Error, duplicate name!" << std::endl;
names.pop_back();
scores.pop_back();
}
}
names.push_back(tempName);
scores.push_back(tempScore);
}
else
{
std::cout << "Wrong name and score!" << std::endl;
break;
}
}
这是使用上述代码的示例输出。
Enter a name followed by a score
foo 7
bar 9
foo 3
Error, duplicate name!
^Z
foo 7
foo 3
Press any key to continue . . .
它删除了我以前对tempName
的输入,并输入最后一个输入的名称,即重复。我尝试使用vector.erase
,但这给了我no instance of overloaded function
。
使用地图将更有效地解决您的问题对数时间复杂性。它也将是简洁而直观的。
std::map< string, int> mymap;
// your loop starts
mymap[tempName] = tempScore;
// loop ends
如果已经存在字符串,则设置值语句将替换字符串的值。
从向量擦除使用find
和erase
vector<string>::const_iterator citr = std::find(names.cbegin(), names.cend(), tempName);
if (citr != names.cend())
{
names.erase(citr);
}
使您的生活更轻松,例如@devsaw建议,使用地图,以便您可以更有效地查找并在一个呼叫中删除字符串和整数条目。
相关文章:
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 在 C++ 中输出枚举类类型的向量元素
- 用向量的向量元素初始化向量的空向量
- 为什么不允许使用可变长度数组作为向量元素?
- 在函数中传递向量元素
- 使用 Rcpp 加速替换迭代算法中的列表和向量元素是否合法?
- 返回向量元素的 l 值的正确方法是什么?
- 当向量增长时,指向向量元素的C++指针是否无效
- 如何在C++中从一个向量元素减去std::unorderede_map向量元素并更新它
- C++:向量元素赋值导致访问冲突
- 将向量元素与字符串元素进行比较,而不初始化向量
- 从2D矢量中找出最小尺寸的向量元素的更好方法
- 当我尝试将一个向量元素的值分配给另一个向量元素时,为什么我的应用程序会崩溃
- 使用递归C++向量元素的总和
- 如何查找为数组中的最低值编制索引的向量元素
- 限制指针访问STL ::向量元素
- 访问索引指向向量元素时的seg故障 - 做错了什么
- 如何使用指针访问向量元素的各个元素
- 向量元素数据损坏了Find()操作
- 将字符值分配给向量元素.C