简体   繁体   English

C ++擦除向量元素

[英]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个元素。

Check the example in the ref too. 也检查参考中的示例

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM