Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

вопрос по std::vector

1.9K
28 декабря 2004 года
solovey
113 / / 25.07.2004
std::vector< std::string > Words;

bool getWord(std::vector< std::string > & buf)
{
TCHAR Temp[256];
memset(Temp,0,256*sizeof(TCHAR));
std::cin.getline(Temp,255);
std::string tmp;
tmp.assign(Temp);
buf.push_back(tmp);
return true;
}

void inputWords(std::vector< std::string > locWords)
{
//std::vector< TCHAR > Temp;
getWord(locWords);

for(std::vector< TCHAR >::size_type i = 0;
!_tcscmp(locWords.c_str(),"Quit");
i++) getWord(locWords);
}

...............
inputWords(Words);

Мне надо заполнять vector до момента, пока не введено слово "Quit". Начинаю вводить, после ввода первого значения вылетает то, что на картинке. В чем дело? Поясните пожалуйста.
1.9K
28 декабря 2004 года
solovey
113 / / 25.07.2004
.
8.2K
29 декабря 2004 года
gorodok
17 / / 22.12.2004
Код:
#pragma warning(disable:4786)

#include <iostream>
#include <vector>
#include <string>
using namespace std ;
vector <string> slovo;
string end = "Quit";

string getWord()
{
string str;
cin >> str;
return str;
}
void main()
{
    while(getWord()!=end)
    {
        slovo.push_back(getWord());
        slovo.resize(slovo.size()+1);
    }
}
1.9K
30 декабря 2004 года
solovey
113 / / 25.07.2004
Цитата:
Originally posted by gorodok
Код:
#pragma warning(disable:4786)

#include <iostream>
#include <vector>
#include <string>
using namespace std ;
vector <string> slovo;
string end = "Quit";

string getWord()
{
string str;
cin >> str;
return str;
}
void main()
{
    while(getWord()!=end)
    {
        slovo.push_back(getWord());
        slovo.resize(slovo.size()+1); /* зачем? */
    }
}


А разве slovo.push_back(getWord()) не увеличит автоматически размер на 1?

8.2K
30 декабря 2004 года
gorodok
17 / / 22.12.2004
Цитата:
Originally posted by solovey

А разве slovo.push_back(getWord()) не увеличит автоматически размер на 1?


Ты прав :D :

Код:
#pragma warning(disable:4786)

#include <iostream>
#include <vector>
#include <string>
using namespace std ;
vector <string> slovo;
string end = "Quit";

string getWord()
{
string str;
cin >> str;
return str;
}
void main()
{
    string tmp;
    do
    {
        tmp=getWord();
        slovo.push_back(tmp);
        cout << "Last element: " << slovo.back( )<<", and size: "<< slovo.size() << endl;
    }while(tmp!=end);
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог