Как перемещать элементы в зависимости от того, что есть в векторе? - PullRequest
0 голосов
/ 10 апреля 2020

Я хотел бы знать, как я могу перемещать элементы из одного вектора в другой в зависимости от того, какой элемент находится в другом векторе. Например, скажем, у меня есть 2 вектора. Один пустой, а другой содержит целые числа. Как мне написать оператор if и else, если я хочу переместить число 2, если в другом векторе есть число 2.

int main() {

vector <int> myvec {};
vector <int> newvec {1,2,3,4,5};

if () {

}  

else if () {




    }

displaypoints(newvec);
displaypoints(myvec);

Код выше похож на то, что я говорил. Если в новом векторе c есть число 2, переместите его в вектор myve c. Если в новом векторе c нет числа 2, вместо этого переместите число 3. Какими будут заявления?

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Вы можете использовать std::find(), чтобы узнать, есть ли 2 в некотором диапазоне в newVec, затем вставить 2, если есть 2 и 3, в противном случае

if (auto it = std::find(newVec.begin(), newVec.end(), 2); it != newVec.end()) {//c++17 feature
    myVec.push_back(*it);
}
else myVec.push_back(3);

std::find возвращает итератор для первый найденный элемент равен указанному значению или итератор позиции рядом с последним элементом в вашем диапазоне, в противном случае

1 голос
/ 10 апреля 2020

Я думаю, что этот пример может решить то, что вы сказали: «Если в vector1 есть число 2, тогда переместите его в vector2». «В противном случае переместите номер 3.»

bool move_vec(vector<int>& v1, vector<int>& v2, int x) {
    int cnt = 0;
    vector<int>::iterator it = v1.begin();
    while (it != v1.end()) {
        if (*it == x) {
            ++cnt;
            it = v1.erase(it);
        } else {
            ++it;
        }
    }
    v2.insert(v2.end(), cnt, x);
    return cnt != 0;
}
vector<int>a = { 1,2,3,4,5,1,2,3,4,5 }, b = { 1,1,1 };
int main() {
    if (!move_vec(a, b, 2))
        move_vec(a, b, 3);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...