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

Исправление ошибок в программе - C++

Восстановить пароль Регистрация
 
DimaP
Сообщений: n/a
11.07.2011, 08:39     Исправление ошибок в программе #1
C++
1
2
3
4
5
6
vector<int>v;
int x;
while(cin>>x) v.push_back(x);
for(int i=0; i<v.size(); ++i);
    cout << "v[" << i <<"] == " << v[i] << endl;
keep_window_open();
В 4 строке warning C4018: '<' : signed/unsigned mismatch - как это можно исправить?
В 5 строке - 'i' : undeclared identifier. Но ведь я ее объявил в for?

 Комментарий модератора 
Нет уж, один вопрос - одна тема, тем более что ваш вопрос никакого отношения к вопросу, обсуждавшемуся в той теме, не имеет.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2011, 08:39     Исправление ошибок в программе
Посмотрите здесь:

C++ Исправление ошибок в C++
C++ исправление ошибок
C++ Исправление ошибок в программе
C++ Исправление ошибок в программе
C++ Исправление ошибок
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.07.2011, 09:05     Исправление ошибок в программе #2
C++
1
2
3
4
5
6
vector<int>v;
int x;
while(cin>>x) v.push_back(x);
for(vector< int >::size_type i=0; i<v.size(); ++i)
        cout << "v[" << i <<"] == " << v[i] << endl;
keep_window_open();
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
11.07.2011, 09:20     Исправление ошибок в программе #3
можно еще через итератор
C++
1
std::vector < int >::iterator it;
C++
1
2
for ( std::vector < int >::iterator it = vec.begin(); it != vec.end(); it++ )
    std::cout << " " << *it;
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.07.2011, 09:28     Исправление ошибок в программе #4
Mиxaил, можно, конечно. Но просьба была исправить код, а не сделать так, как можно. Далее:
1. Про принцип наименьших привилегий слышали? Поскольку цикл используется для вывода, правильнее использовать константный итератор.
2. Лучше сохранить в отдельной переменной значение vec.end(), каждую итерацию вызывать эту функцию не труЪ.
3. it++ вообще убивает. Для объектов (в данном случае итераторов) принципиально использовать преинкремент, поскольку постинкремент влечёт создание временной копии, которая в данном случае никому не нужна.

Ну а если уж говорить, как можно, то лучше всего

C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
......
std::vector< int > vec;
......
std::copy(vec.begin(), vec.end(), std::ostream_iterator< int > (std::cout, "  "));
Yandex
Объявления
11.07.2011, 09:28     Исправление ошибок в программе
Ответ Создать тему
Опции темы

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