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

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

Восстановить пароль Регистрация
 
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
15.08.2011, 22:45     контейнер -вектор вложеный в вектор #1
Помогите, пожалуйста найти ошибку. Есть строка типа 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;
}
 Комментарий модератора 
Теги форматирования кода.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2011, 22:45     контейнер -вектор вложеный в вектор
Посмотрите здесь:

C++ БД.Контейнер - Вектор.
Класс-Контейнер Вектор C++
Класс-Контейнер Вектор C++
C++ Класс-Контейнер Вектор
C++ Класс-Контейнер Вектор
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Net_Wanderer
235 / 208 / 19
Регистрация: 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;
}
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
15.08.2011, 23:05  [ТС]     контейнер -вектор вложеный в вектор #3
Спасибо за Ваш ответ. Я новичок и самостоятельно начал изучать С++. Пока знаю не много, по этому не очень понял Ваш код. Вы моглы бы его разъяснить?
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
15.08.2011, 23:16     контейнер -вектор вложеный в вектор #4
Попробуйте перепсать свой код со слудущими изменениями:
Используйте std::vector<std::string> вместо вашего вектора векторов.
Зачем создавать вектор на 10 элементов? вектор для того и создан что бы изменять свой размер..
И слова выделяйте с помощью stringstream, о том что это такое можно прочитать например здесь.
Yandex
Объявления
15.08.2011, 23:16     контейнер -вектор вложеный в вектор
Ответ Создать тему
Опции темы

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