Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > класс-контейнер вектор


Автор: Анна25 18.4.2013, 20:37
дана последовательность целых чисел, вставить новый элемент после всех элементов , которые заканчиваются на заданную цифру. Помогите пожалуйста, никак не могу закрыть вектора =( 

Автор: Crafty 18.4.2013, 21:17
Как вариант,
Код

#include <iostream>
#include <vector>

void printVec(const std::vector<int>& ivec)
{
    for (std::vector<int>::const_iterator it = ivec.begin(); it != ivec.end(); ++it)
        std::cout << *it << ' ';
    std::cout << std::endl;
}

int main()
{
    const size_t arrSize = 10;
    int arr[arrSize] = {-5, -2, 12, 31, 44, 15, 2, 11, -10, 12};
    std::vector<int> ivec(arr, arr + arrSize);
    printVec(ivec);

    const int insNum = 5; // Число которое вставляем
    const int digit = 2; // Заданая цифра после к-рой вставляем
    for (std::vector<int>::iterator it = ivec.begin(); it != ivec.end(); ++it)
        if (abs(*it) % 10 == digit)
            it = ivec.insert(it+1, insNum);

    std::cout << "New vector :" << std::endl;
    printVec(ivec);
    return 0;
}

спрашивай если что не понятно

Автор: Анна25 18.4.2013, 21:34
Глупый наверно вопрос, но "int arr[arrSize]" что означает параметр в квадратных скобках? и за что отвечает вот эта часть , можете пояснить ,если не трудно "ivec(arr, arr + arrSize)" ?

Автор: Crafty 18.4.2013, 21:42
Цитата(Анна25 @  18.4.2013,  21:34 Найти цитируемый пост)
Глупый наверно вопрос, но "int arr[arrSize]" что означает параметр в квадратных скобках? и за что отвечает вот эта часть , можете пояснить ,если не трудно "ivec(arr, arr + arrSize)" ? 

1) arrSize это константа, размера массива
2) инициализирую вектор массивом

В с++ 11 все проще

Код

#include <iostream>
#include <vector>

void printVec(const std::vector<int>& ivec)
{
    for (const int i : ivec)
        std::cout << i << ' ';
    std::cout << std::endl;
}

int main()
{
    std::vector<int> ivec {-5, -2, 12, 31, 44, 15, 2, 11, -10, 12};
    printVec(ivec);
    const int insNum = 5; // Число которое вставляем
    const int digit = 2; // Заданая цифра после к-рой вставляем
    for (auto it = ivec.begin(); it != ivec.end(); ++it)
        if (abs(*it) % 10 == digit)
            it = ivec.insert(it+1, insNum);

    std::cout << "New vector :" << std::endl;
    printVec(ivec);
    return 0;
}


Автор: Анна25 18.4.2013, 21:46
вот второй вариант мне понятен полностью, спасибо большое! =) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)