vector <string> ....
От: Hermes Россия  
Дата: 06.10.04 00:23
Оценка:
не могли бы вы обяснить как мне работать с вектором если элементы его — это строки
код:
vector < string > vData;
string temp = "11";
vData.push_back(temp);
vData.push_back(temp);
vData.push_back(temp);


Так вот как пройтись по вектору стобы просмотреть все его элементы
так не работает

for (int i = vData.begin(); i < vData.end(); i++)
{
cout << vData[i];
}


ps.
Не пинайте сильно...
Лабу делаю
Re: vector <string> ....
От: Nuald Россия http://nuald.blogspot.com
Дата: 06.10.04 00:30
Оценка:
Здравствуйте, Hermes, Вы писали:

H>Так вот как пройтись по вектору стобы просмотреть все его элементы

H>так не работает
H>
H>for (int i = vData.begin(); i < vData.end(); i++)
H>{
H>cout << vData[i];
H>}
H>


Надо через итераторы:

typedef vector<string> stringvector;
stringvector vData;
vData.push_back(...)
...
for (stringvector::const_iterator iter = vData.begin(); 
     iter != vData.end(); ++iter) {
  cout << *iter;
}
Re: vector <string> ....
От: Николай Gorlum  
Дата: 06.10.04 00:32
Оценка:
Здравствуйте, Hermes, Вы писали:

H>не могли бы вы обяснить как мне работать с вектором если элементы его — это строки

H>код:
H>
H>vector < string > vData;
H>string temp = "11";
H>vData.push_back(temp);
H>vData.push_back(temp);
H>vData.push_back(temp);
H>


H>Так вот как пройтись по вектору стобы просмотреть все его элементы

H>так не работает

H>
H>for (int i = vData.begin(); i < vData.end(); i++)
H>{
H>cout << vData[i];
H>}
H>


H>ps.

H>Не пинайте сильно...
H>Лабу делаю

может так:

for(int i = 0; i < vData.size(); i++)
{
cout << vData[i];
}

Re[2]: vector <string> ....
От: Hermes Россия  
Дата: 06.10.04 00:44
Оценка:
Не хочет он
не сомпилиться на строке
cout << *iter;


с ошибкой:

c:\Projects\OPT\Lab2\cBase.cpp(37): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'const std::allocator<_Ty>::value_type' (or there is no acceptable conversion)
with
[
_Ty=std::string
]
Re[3]: vector <string> ....
От: Аноним  
Дата: 06.10.04 00:48
Оценка:
Здравствуйте, Hermes, Вы писали:

H>Не хочет он

H>не сомпилиться на строке
H>
H>cout << *iter;
H>


H>с ошибкой:


H>c:\Projects\OPT\Lab2\cBase.cpp(37): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'const std::allocator<_Ty>::value_type' (or there is no acceptable conversion)

H> with
H> [
H> _Ty=std::string
H> ]

преобразуй string в char*

какой-то метод был... c_str() чтоли...
Re[4]: vector <string> ....
От: Hermes Россия  
Дата: 06.10.04 01:01
Оценка:
исправил на...

vector < const char* > vData;
vData.push_back(temp.c_str());
vData.push_back(temp.c_str());
....
for (int i=0; i < vData.size(); i++) {
    cout << vData[i];
}

ничего не выводит...
Re[5]: vector <string> ....
От: Аноним  
Дата: 06.10.04 01:11
Оценка:
Здравствуйте, Hermes, Вы писали:

H>исправил на...


H>
H>vector < const char* > vData;
H>vData.push_back(temp.c_str());
H>vData.push_back(temp.c_str());
H>....
H>for (int i=0; i < vData.size(); i++) {
H>    cout << vData[i];
H>}    

H>

H>ничего не выводит...

Я предлагал писать:

for (int i=0; i < vData.size(); i++) {
cout << vData[i].c_str() << endl;
}
Re[6]: vector <string> ....
От: Hermes Россия  
Дата: 06.10.04 01:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Hermes, Вы писали:


H>>исправил на...


H>>
H>>vector < const char* > vData;
H>>vData.push_back(temp.c_str());
H>>vData.push_back(temp.c_str());
H>>....
H>>for (int i=0; i < vData.size(); i++) {
H>>    cout << vData[i];
H>>}    

H>>

H>>ничего не выводит...

А>Я предлагал писать:


А>for (int i=0; i < vData.size(); i++) {

А> cout << vData[i].c_str() << endl;
А>}

неа...
нехочет он и так.
ругается:
c:\Projects\OPT\Lab2\cBase.cpp(39): error C2228: left of '.c_str' must have class/struct/union type
Re[7]: Ну сколько можно мурыжить?
От: McSeem2 США http://www.antigrain.com
Дата: 06.10.04 02:40
Оценка: 2 (1) +3 :)))
#include <string>
#include <vector>
#include <iostream>

int main()
{
    std::vector<std::string> vData;
    std::string temp = "11";
    vData.push_back(temp);
    vData.push_back(temp);
    vData.push_back(temp);

    // Хошь так
    for (int i = 0; i < vData.size(); i++)
    {
       std::cout << vData[i] << std::endl;
    }

    // Хошь так
    for (std::vector<std::string>::const_iterator it = vData.begin(); it != vData.end(); ++it)
    {
       std::cout << *it << std::endl;
    }
}


Учите матчасть...
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[7]: vector <string> ....
От: Аноним  
Дата: 06.10.04 10:33
Оценка:
Здравствуйте, Hermes.


Надеюсь
using namespace std;
указано?

Или, как уже сказал, McSeem2 используйте
std::string и т.д.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.