PDA

View Full Version : حذف عنصری در وکتور



amirrj
جمعه 28 آذر 1393, 14:49 عصر
سلام دوستان
می خواستم بدونم و چگونه میشه عنصر خاصی که در وسط وکتور قرار دارد را حذف کرد ؟ (یعنی همان تابع remove را برایش بنویسیم) ؟

zero_ox
جمعه 28 آذر 1393, 17:45 عصر
سلام : خروجی رو که ببیند متوجه می شید

#include <vector>#include <iostream>




int main( )
{
std::vector<int> c{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for (auto &i : c) {
std::cout << i << " ";
}
std::cout << '\n';


c.erase(c.begin());


for (auto &i : c) {
std::cout << i << " ";
}
std::cout << '\n';


c.erase(c.begin()+2, c.begin()+5);


for (auto &i : c) {
std::cout << i << " ";
}
std::cout << '\n';
}

amirrj
جمعه 28 آذر 1393, 18:17 عصر
ممنون ولی منظور من این بود که مثلا عدد k را از کاربر گرفته در درون وکتور جستجو کرده و در صورت وجود پاک کند

zero_ox
جمعه 28 آذر 1393, 19:19 عصر
با تابع find می تونید اینکار رو انجام بدید

rahnema1
جمعه 28 آذر 1393, 20:31 عصر
سلام
از جستجوی دودویی میشه استفاده کرد البته در صورتی که قبلا مرتب شده باشه
حتی میشه به جای vector از unordered_maltiset هم استفاده کرد

zero_ox
جمعه 28 آذر 1393, 23:06 عصر
#include <iostream>#include <vector>
#include <algorithm>
int main(){
std::vector<int> c={2,1,9,4,3,6,7,8};
for(auto &i: c)
std::cout<<" "<<i;
int key;
std::cout<<"\n : ";
std::cin>>key;
auto it = std::find(c.begin(), c.end(), key);
if(it != c.end())
c.erase(it);
for(auto &i : c)
std::cout<<" "<<i;
return 0;
}