1、先用swap把要删除的元素和vector里最后一个元素交换位置,然后把最后一个元素pop_back
std::swap(*it, observers_.back());
observers_.pop_back();
2、先用find查找元素,然后用erase删除元素
Iterator it = std::find(observers_.begin(), observers_.end(), x);
observers_.erase(it);
1的效率高,2删除元素后需要把后面的元素依次向前移动,但有时会要求不能改变vector中元素顺序,此时只能使用2。
string
string a= "abcdefghigklmn" ;
string b= "def" ;
string c= "123" ;
if (a.find(b)== string::npos ) //不存在。
cout << "not found\n" ;
else
cout << "found\n" ;
vector/set/map
find(a.begin(),a.end(),value)
std::vector<int> vec = {10, 20, 30, 40, 50};
int targetElement = 30;
auto itr = std::find(vec.begin(), vec.end(), targetElement);
if (itr != vec.end()) {
size_t index = std::distance(vec.begin(), itr);
std::cout << "The element is found at index: " << index << std::endl;
} else {
std::cout << "The element is not found in the vector." << std::endl;
}
count(begin,end,‘a’)
,其中begin指的是起始地址,end指的是结束地址,第三个参数指的是需要查找的字符’a’。 vector<int> numbers = {1, 2, 2, 3, 2, 4, 5, 2};
int value= 2;
int count = count(numbers.begin(), numbers.end(), value);