Форум программистов, компьютерный форум, киберфорум
Наши страницы

Прочитать последовательность слов из потока ввода. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ задача на тему Поиск. http://www.cyberforum.ru/cpp-beginners/thread33540.html
Дана матрица A. Произвести поиск элемента (последовательности элементов) по нечетным строкам матрицы. Помогите пожалуйста новичку!!!
C++ Размещение значений в обратном порядке Исправте код пожалуста!!! #include "stdafx.h" #include <iostream> #include <iomanip> #include <time.h> http://www.cyberforum.ru/cpp-beginners/thread33523.html
Найдтие ошибку в програме C++
Условие: есть два двумерних масива A, B, нада залоплнить третий X, в первие n столбцов нада написать масив А, в остальние В, вот код программы: #include<iostream.h> #include<conio.h>...
C++ Описать процедуру или функцию, которая заменяет в списке L все вхождения E1 на E2
У меня проблемка, есть три задачи, нужно реализовать на Делфи или на С++ (я хотел написать в определённые разделы вашего форума, но у меня нет почемуто прав там создавать темы и вообще что либо там...
C++ Массив строк, не правильный поиск http://www.cyberforum.ru/cpp-beginners/thread33509.html
Вводим имя, инструмент, год рождения, время обучения. Хочу вывести имя ученика играюшего на скрипке, но он упорно выводит имена всех. Пробывал в разных вариациях, не только так, но уже устал, по...
C++ c++ пара задачек 1. В одномерном массиве, состоящим из n вещественных элементов(размерность задается именнованной константой), вычислить: - максимальный элемент массива - сумму элементов массива, расположенных до... подробнее

Показать сообщение отдельно
#pragma
Временно недоступен
954 / 225 / 6
Регистрация: 12.04.2009
Сообщений: 921
14.05.2009, 22:59  [ТС]
А элементы вектора как вообще сравнивать?
C++
1
strings_vector[i]==strings_vector[j]
Что-то не работает,может,строки не сравниваются и всё удаляется?Я уже итераторы убрал,это должно работать,но нет
C++
1
2
3
4
5
6
7
    for (unsigned int i=0;i<strings_vector.size();++i)
       {
         for (unsigned int j=i+1;j<strings_vector.size()+1;++j)
           {
             if (strings_vector[i]==strings_vector[j]) strings_vector[j].erase();
           }
       }
Само по себе использование цикла for не является ошибкой,по крайней мере грубой.В чём ошибка?А функция erase заботится о перемещении(уплотнении) последовательности в памяти после удаления элемента?

Добавлено через 1 час 43 минуты 56 секунд
Ура! Наконец-то дошло,где была ошибка!В цикле я ограничивал индексы элементов i и j размерностью вектора,а она начинается с 1,а не с нуля.Решено!
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
void stream_read()
{
    istream_iterator<string>my_iterator(cin);
    vector<string>strings_vector(first_vector_size); // const int first_vector_size=1;
    for (unsigned int i=0;i<strings_vector.size();++i)
    {
        strings_vector[i]=*my_iterator;
        if (strings_vector[i]!="Quit") strings_vector.push_back(*my_iterator);
        else
        {
            strings_vector.pop_back();
            break;
        }
        ++my_iterator;
    }
   /********************* TEST BEGIN ***********************/
    cout<<"Before modification:"<<endl;
    cout<<endl<<"Vector size: "<<strings_vector.size()<<endl
              <<"Members: "<<endl;
    for (unsigned int i=0;i<strings_vector.size();++i)
        cout<<strings_vector[i]<<endl;
   /********************* TEST END *************************/
    for (unsigned int i=0;i<strings_vector.size()-1;++i)
       {
         for (unsigned int j=strings_vector.size()-1;j>i;--j)
             {
                if (strings_vector.at(i)==strings_vector.at(j))
                   strings_vector.at(j).erase();
             }
       }
   /********************* TEST BEGIN ***********************/
    cout<<"After modification:"<<endl;
    cout<<endl<<"Vector size: "<<strings_vector.size()<<endl
              <<"Members: "<<endl;
    for (unsigned int i=0;i<strings_vector.size();++i)
        cout<<strings_vector[i]<<endl;
   /********************* TEST END *************************/
}
А почему while предпочтительнее?И ещё меня смущает,что размерность вектора не меняется после удаления элементов,образуются "дыры"!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.