Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
4 / 4 / 0
Регистрация: 27.12.2010
Сообщений: 56
1

контейнер -вектор вложеный в вектор

15.08.2011, 22:45. Показов 994. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста найти ошибку. Есть строка типа string - обычное предложение из слов, разделённые пробелами. Мне нужно записать это предложение в вектор, который сам состоит из векторов типа char. т. е. каждый вложеный вектор типа char - это отдельное слово из исходного предложения. И вывести третий элемент внешнего вектора слово на экран - т. е. 3-е слово исходного предложения.

Я создал вектор на 10 элементов , который состоит из векторов типа char. Через функцию insert() посимвольно вставляю в вектор слово из предложения, пока не встречу первый пробел. Как встретиться пробел - внешний вектор переходит на следующий элемент. После каждой такой вставки удаляю перенесёные в вектор слова из предложения. Цикл продолжаеться пока размер предложения не станет равен 0.

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
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
int main ()
{
 
vector < vector<char> > vect (10);
 
string s=" Some sentance with different words";
 
char p=' '; // СИМВОЛ ПРОБЕЛА
 
cout<<s<<endl;
 
 
while (s.size()!=0)
{
 
     for (vector < vector<char> >::size_type it=0, in=0; it!=vect.size(); ++it)
    
     vect.insert(vect[it][in], s.begin(), s.find_first_of(p) );  //Добавление слова в каждый элемент 
                                                                              //внешнего вектора - т.е. в подвекторы
 
     s.erase(s.begin(),s.find_first_of(p) ) // удалить из предложения слово, которое мы записывали в вектор
}
    
// Цыкл для вывода вектора
       for (vector< vector<char> >::size_type in2=0, ix2=0; in2!=20; ix2!=vect.size(); ++in2, ++ix2)
       cout<<vect[in2][ix2] ;
 
system("pause");
return 0;
}
 Комментарий модератора 
Теги форматирования кода.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2011, 22:45
Ответы с готовыми решениями:

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют...

Контейнер-вектор
Используя контейнер-вектор, его алгоритмы и итераторы, решите задачи: a. Каждый элемент разделить...

БД.Контейнер - Вектор.
Условие: Написать программу для решения задачи. Для хранения данных использовать контейнер. В...

Класс-Контейнер Вектор
Вставить новый элемент после всех элементов, кратных своему номеру

3
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
15.08.2011, 22:52 2
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
#include <iostream>
#include <stdexcept>
#include <sstream>
#include <string>
#include <vector>
 
int main()
try{
    std::string sentence("That's what I'm talking about");
    std::size_t number = 2;
 
    std::string word;
    std::istringstream isstr;
    std::vector<std::string> words;
 
    isstr.str(sentence);
    while (isstr >> word)
        words.push_back(word);
 
    std::cout << words.at(number) << std::endl;
    return 0;
}
 
catch (std::exception &e)
{
    std::cout << "Exception: " << e.what() << std::endl;
}
0
4 / 4 / 0
Регистрация: 27.12.2010
Сообщений: 56
15.08.2011, 23:05  [ТС] 3
Спасибо за Ваш ответ. Я новичок и самостоятельно начал изучать С++. Пока знаю не много, по этому не очень понял Ваш код. Вы моглы бы его разъяснить?
0
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
15.08.2011, 23:16 4
Попробуйте перепсать свой код со слудущими изменениями:
Используйте std::vector<std::string> вместо вашего вектора векторов.
Зачем создавать вектор на 10 элементов? вектор для того и создан что бы изменять свой размер..
И слова выделяйте с помощью stringstream, о том что это такое можно прочитать например здесь.
0
15.08.2011, 23:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2011, 23:16
Помогаю со студенческими работами здесь

Класс-контейнер вектор
Дана последовательность целых чисел. .Перед каждым k-тым по счету элементом вставить 0. Нуждаюсь в...

Класс-Контейнер Вектор
Как подсчитать в векторе из целых чисел количество максимальных элементов?

Класс-Контейнер Вектор
Подскажите пожалуйста, как заполнить вектор латинским алфавитом?

Класс-Контейнер Вектор
I Дана последовательность целых чисел Подсчитать сумму элиментов, расположенных между...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru