Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
QWERY_2012
5 / 5 / 2
Регистрация: 09.09.2012
Сообщений: 227
#1

Использовать Vector вместо array - C++

11.11.2012, 01:37. Просмотров 401. Ответов 3
Метки нет (Все метки)

Помогите, пожалуйста, переписать программу чтобы заменить array на Vector :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Sorting an Array 
 
#include <iostream>
 
void fill_array(int a[], int size, int& number_used);
 
void sort(int a[], int number_used);
 
void swap_values(int& v1, int& v2);
 
 
int index_of_smallest(const int a[], int start_index, int number_used);
 
int main( )
{
    using namespace std;
    cout << "This program sorts numbers from lowest to highest.\n";
 
    int sample_array[10], number_used;
    fill_array(sample_array, 10, number_used);
    sort(sample_array, number_used);
 
    cout << "In sorted order the numbers are:\n";
    for (int index = 0; index < number_used; index++)
        cout << sample_array[index] << " ";
    cout << endl;
 
 
    system("PAUSE");
    return 0;
}
 
//Uses iostream:
void fill_array(int a[], int size, int& number_used)
{
    using namespace std;
    cout << "Enter up to " << size << " nonnegative whole numbers.\n"
         << "Mark the end of the list with a negative number.\n";
    int next, index = 0;
    cin >> next;
    while ((next >= 0) && (index < size))
    {
        a[index] = next;
        index++;
        cin >> next;
    }
 
    number_used = index;
}
 
 
    void sort(int a[], int number_used)
    {
    int index_of_next_smallest;
 
 
    for (int index = 0; index < number_used - 1; index++)
    {//Place the correct value in a[index]:
        index_of_next_smallest =
                     index_of_smallest(a, index, number_used);
        swap_values(a[index], a[index_of_next_smallest]);
        //a[0] <= a[1] <=...<= a[index] are the smallest of the original array 
        //elements. The rest of the elements are in the remaining positions.
    }
}
 
 
        void swap_values(int& v1, int& v2)
        {
         int temp;
         temp = v1;
         v1 = v2;
         v2 = temp;
        }
 
 
        int index_of_smallest(const int a[], int start_index, int number_used)
        {
            int min = a[start_index],
            index_of_min = start_index;
        for (int index = start_index + 1; index < number_used; index++)
             if (a[index] < min)
             {
               min = a[index];
               index_of_min = index;
                //min is the smallest of a[start_index] through a[index]
             }
 
    return index_of_min;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2012, 01:37     Использовать Vector вместо array
Посмотрите здесь:

C++ Что лучше использовать vector или массив
Насколько разумно использовать throw вместо return C++
Использовать new вместо обьявления массива из трех структур C++
C++ Изменить способ выделения памяти для массива (вместо new использовать malloc)
Динамические массивы типа vector и array C++
В одномерном массиве (использовать vector) подсчитать сумму элементов после последнего положительного элемента C++
C++ В чем существенные отличия Array и Vector
C++ Как вместо char* использовать vector<string>?
C++ Возможно ли вложение контейнера array в контейнер vector?
Использовать вместо массивов - указатели C++
Std::vector для Array of String C++
C++ Реализовать поиск в массиве пользовательских объектов по заданному полю (использовать std::vector)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
11.11.2012, 03:05     Использовать Vector вместо array #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using std::cout;
using std::endl;
using std::cin;
 
int main()
{
    std::vector<int> v;
    cout<<"Fiil the vector (enter char to stop):\n";
    std::copy(std::istream_iterator<int>(cin), std::istream_iterator<int>(), back_inserter(v));
    cout << "You entered:\n";
    for (int & x : v) cout<<x<<" ";
    std::sort(v.begin(), v.end());
    cout << "\nIn sorted order the numbers are:\n";
    for (int & x : v) cout<<x<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
QWERY_2012
5 / 5 / 2
Регистрация: 09.09.2012
Сообщений: 227
11.11.2012, 07:39  [ТС]     Использовать Vector вместо array #3
Подскажите пожалуйста:
for (int & x : v) - выдаёт сообщение, что expected primary-expression before "int", expected ';' before 'int' could not convert 'str::sotf'

Я новичок - ни чего в vector не понимаю .
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
11.11.2012, 11:19     Использовать Vector вместо array #4
Цитата Сообщение от QWERY_2012 Посмотреть сообщение
Подскажите пожалуйста:
for (int & x : v) - выдаёт сообщение, что expected primary-expression before "int", expected ';' before 'int' could not convert 'str::sotf'
эта фишка из нового стандарта, наверное твой компилятор не поддерживает новый стандарт, исправить легко, сделать как обычный цикл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using std::cout;
using std::endl;
using std::cin;
 
int main()
{
    std::vector<int> v;
    cout<<"Fiil the vector (enter char to stop):\n";
    std::copy(std::istream_iterator<int>(cin), std::istream_iterator<int>(), back_inserter(v));
    cout << "You entered:\n";
    for (unsigned x = 0; x < v.size(); x++) cout<<x<<" ";
    std::sort(v.begin(), v.end());
    cout << "\nIn sorted order the numbers are:\n";
    for ( unsigned x = 0; x < v.size(); x++) cout<<x<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
Yandex
Объявления
11.11.2012, 11:19     Использовать Vector вместо array
Ответ Создать тему
Опции темы

Текущее время: 05:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru