gpt4 book ai didi

c++ - 按共享指针 vector 中的值删除

转载 作者:行者123 更新时间:2023-11-27 23:42:16 39 4
gpt4 key购买 nike

我想按值从字符串共享 ptr 的 vector 中删除(即 vector<shared_ptr<string>> )。是否有任何有效的方法来执行此操作而不是迭代完整的 vector 然后从迭代器位置删除。

#include <bits/stdc++.h>
using namespace std;

int main()
{
vector<shared_ptr<string>> v;
v.push_back(make_shared<string>("aaa"));
int j = 0,ind;
for(auto i : v) {
if((*i)=="aaa"){
ind = j;
}
j++;
}
v.erase(v.begin()+ind);
}

我也不想为 map 使用内存(值与地址)。

最佳答案

像那样尝试(Erase-Remove Idiom):

string s = "aaa";
auto cmp = [s](const shared_ptr<string> &p) { return s == *p; };

v.erase(std::remove_if(v.begin(), v.end(), cmp), v.end());

关于c++ - 按共享指针 vector 中的值删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53609259/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com