[英]C++ Erasing Vector element
vector<char>teikums(count);
Having problems when trying to erase a element from vector. 尝试从向量中删除元素时遇到问题。 For Example i input:
例如我输入:
a b c d e f
and when trying to erase a element 当试图删除一个元素时
teikums.erase(teikums.begin() + 3);
it will output 它会输出
a b d e e f
Been trying to figure out why it doesn't output 一直试图找出为什么它不输出
a b c d f
Code: 码:
int main() {
system("cls"); // Notira Ekranu
patsk = 0; // Pieskir vertibu
cout << "Ievadi Massiva lielumu: ";
cin >> count;
vector<char>teikums(count);
cout << "Vai aizpildit burtus automatiski (Y/Cits): ";
cin >> aizp;
srand(time(NULL));
cout << "\n";
if (aizp == 'y' || aizp == 'Y') {
for (int i = 1; i <= count; i++) {
teikums[i] = (rand() % 26) + 'a';
cout << teikums[i] << " ";
}
}
else {
do {
cout << "Ievadi " << count << " burtus vienu pa vienam\n";
for (i = 1; i <= count; i++) {
cin >> teikums[i];
if (!((teikums[i] >= 'a' && teikums[i] <= 'z') || (teikums[i] >=
'A' && teikums[i] <= 'Z'))) {
cout << "Kluda! Ievadiet tikai burtus\n";
i = i - 1;
}
}
}
while (i <= count);
}
teikums.erase(teikums.begin() + 3);
do {
cout << "\n";
cout << "\n1.Izpildit individualo uzdevumu";
cout << "\n2.Pievienot jaunu elementu vektoram";
cout << "\n3.Dzest elementu no vektroa";
cout << "\n4.Sakt programmu no jauna";
cout << "\n5.Beigt Darbu";
cout << "\nIevadi izveli : ";
cin >> opcijas;
switch (opcijas) {
case 1:
izpildit_uzdevumu(teikums);
break;
case 2:
pievienot_elementu(teikums, count);
break;
case 3:
dzest_elementu(teikums);
break;
case 4:
no_jauna();
break;
case 5:
return 0;
}
}
while (opcijas != 4);
getch();
}
void izpildit_uzdevumu(vector<char>& teikums) {
patskani = 0;
for (i = 0; i <= count; i++) {
cout << " " << teikums[i];
}
cout << "\nIzmantotie Patskani:";
for (i = 1; i < count; i = i + 2) {
if (teikums[i] == 'a' || teikums[i] == 'e' || teikums[i] == 'i' ||
teikums[i] == 'o' || teikums[i] == 'u' || teikums[i] == 'A' ||
teikums[i] == 'E' || teikums[i] == 'I' || teikums[i] == 'O' ||
teikums[i] == 'U') {
patskani = patskani + 1;
cout << teikums[i];
}
}
cout << "\nPatskanu Skaits: " << patskani;
}
When you erase the element, you should also decrease count
, or use teikums.size()
to monitor the size of your vector. 擦除元素时,还应减少
count
,或使用teikums.size()
监视向量的大小。
You had 6 elements, you did: 您有6个元素,您做到了:
teikums.erase(teikums.begin() + 3);
which erases the 4th element, thus now the vector has 5 elements in number. 删除第4个元素,因此向量现在有5个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.