Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / массивы / 16 сообщений из 16, страница 1 из 1
19.06.2006, 21:40
    #33801186
укеуке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
какой тип необходимо написать, чтобы сформировать строковый массив?
...
Рейтинг: 0 / 0
19.06.2006, 21:45
    #33801197
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
Привет, укеуке!

у> какой тип необходимо написать, чтобы сформировать
у> строковый массив?

Не понятно, массив строк ? Или массив символов, символизирующий строку ?
Уникод или анси ?

---------------------
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
19.06.2006, 22:19
    #33801230
Dostali.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
укеукекакой тип необходимо написать, чтобы сформировать строковый массив?
Попробуй использовать тип AnyCppBook и его статический метод Read
Очень часто помогает...
Ещё есть универсальное ключевое слово RTFM.
...
Рейтинг: 0 / 0
19.06.2006, 23:29
    #33801282
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
укеукекакой тип необходимо написать, чтобы сформировать строковый массив?

#include <vector>
#include <string>

using namespace std;

typedef vector<string> vec_str;

vec_str array_string[20];

array_string[0] = "пример";
...
Рейтинг: 0 / 0
19.06.2006, 23:32
    #33801288
Alexey-M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
А что,
Код: plaintext
1.
2.
char *p =  new char[...] 
...
delete p;
уже не катит ? :)
...
Рейтинг: 0 / 0
20.06.2006, 10:22
    #33801711
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
Alexey-MА что,
Код: plaintext
1.
2.
char *p =  new char[...] 
...
delete p;
уже не катит ? :)

Мля, чуть чаем не подавился ...
Книжку почитай. а ... ?
...
Рейтинг: 0 / 0
20.06.2006, 12:10
    #33802109
Pavel Kilevatyh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
Lepsik укеукекакой тип необходимо написать, чтобы сформировать строковый массив?

#include <vector>
#include <string>

using namespace std;

typedef vector<string> vec_str;

vec_str array_string[20];

array_string[0] = "пример";

гм... Не собирается програмка. Вот эта:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#include <vector>
#include <string>
using namespace std;
int main(char argc, char *argv[])
{
    typedef vector<string>   vec_str;
    vec_str  array_string[ 20 ];
    array_string[ 0 ] = "пример";
    return  0 ;
}
Оно и понятно. Правильней было бы:
Код: plaintext
1.
2.
vector<string> array_string;
array_string.reserve( 20 );
и, соответственно, не
Код: plaintext
array_string[ 0 ] = "пример";
, а
Код: plaintext
array_string.push_back("пример");

Даже в том случае, если первая спорная строка ВЫДЕЛИЛА память, в чем я сомневаюсь, оператор [] обратится к неинициализированному блоку памяти. Вообще стоит на эту тему Саттера почитать.
Вот пример кода, который показывает интересные моменты при работе с векторами:
Код: plaintext
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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
#include <iostream>
#include <vector>

using std::cout;
using std::cerr;
using std::endl;
using std::vector;
void printVector(vector <int> vec);

int main (int argn, char *argv[])
{
    vector <int> ArrayOfInteger;
    vector <int> DstArrayOfInteger;
    cout<<"Резервирую память для ветора\n";
    ArrayOfInteger.reserve( 4 );
    DstArrayOfInteger.reserve( 1 );
    cout<<"Объем занятой памяти "<<ArrayOfInteger.size()<<" позиций по "<<sizeof(int)<<" байт из "<<ArrayOfInteger.capacity()*sizeof(int)<<" байт.\n";
    for(int i= 0 ;i< 10 ;i++)
    {

        ArrayOfInteger.push_back(i);
        cout<<"Объем занятой памяти "<<ArrayOfInteger.size()<<" позиций по "<<sizeof(int)<<" байт из "<<ArrayOfInteger.capacity()*sizeof(int)<<" байт.\n";
    }
    printVector(ArrayOfInteger);

    cout<<"Создаю итераторы\n";
    vector <int>::iterator first, last, cursor, scroller;

    int offset =  3 , items =  2 ;
    cout<<"Требуется удалить "<<items<<" элементов начиная со смещения "<<offset<<"\n";
    first = ArrayOfInteger.begin()+offset;
    last  = ArrayOfInteger.begin()+(offset+items);
    ArrayOfInteger.erase(first, last);
    printVector(ArrayOfInteger);

    cout<<"Требуется удалить "<<offset<<" элементов начиная со смещения "<<items<<"\n";
    first = ArrayOfInteger.begin()+items;
    last  = ArrayOfInteger.begin()+(offset+items);
    ArrayOfInteger.erase(first, last);
    printVector(ArrayOfInteger);

    cout<<"Текущее содержимое DstArrayOfInteger:\n";
    printVector(DstArrayOfInteger);

    first = ArrayOfInteger.begin();
    last  = ArrayOfInteger.end();
    cursor = DstArrayOfInteger.begin();

    while(first<last)
    {
        DstArrayOfInteger.insert(DstArrayOfInteger.begin(), *(first++));
    }
    DstArrayOfInteger.insert(DstArrayOfInteger.begin()+ 2 , - 1 );
    cout<<"Содержимое DstArrayOfInteger после копирования:\n";
    printVector(DstArrayOfInteger);
    cout<<"Поиск "<<(*find(DstArrayOfInteger.begin(), DstArrayOfInteger.end(), - 1 ))<<"\n";

}

void printVector(vector <int> vec)
{
    vector <int>::iterator iterator;
//    cout<<"Содержимое вектора:\n";
    for (iterator = vec.begin(); iterator != vec.end(); ++iterator) cout<<(*iterator)<<"\n";
    return;
}
...
Рейтинг: 0 / 0
20.06.2006, 12:18
    #33802137
Pavel Kilevatyh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
Кстати, в приведенном примере тоже есть гм... ошибки? или недоработки?
В частности в строке while(first<last). Стандарт не гарантирует, что записи
в массиве расположены последовательно. Правильней будет while(first != last)
...
Рейтинг: 0 / 0
20.06.2006, 12:59
    #33802316
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
а разве не проще:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
char** strings;
//стартовая инициализация
strings = new char*[num_strings];
for (int i = 0; i < num_strings; i++){
    strings  = 0;//шоб delete[] не вылител, если что...
}

....


//уничтожение
for (int i = 0; i < num_stirngs; i++){
    delete[] strings;
}

delete[] strings;
 

????
...
Рейтинг: 0 / 0
20.06.2006, 14:14
    #33802599
Pavel Kilevatyh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
ErVа разве не проще???
Ну на вкус и цвет как говорится.
Если решаемая задача не умещается в пределах десятка строк, то не проще. И на этапе отладки и на этапе написания. ИМХО естественно. Больше всего нравится автоматическое освобождение памяти да и защиту от дурака можно проще писать. В общем попробуйте - наверняка понравится.
А ловить откуда память течет при аварийном выходе - муторное занятие.
...
Рейтинг: 0 / 0
20.06.2006, 15:46
    #33803081
Alexey-M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
ZrenBy, какую ? ;)
...
Рейтинг: 0 / 0
20.06.2006, 16:00
    #33803130
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
Alexey-MZrenBy, какую ? ;)

Ну не Снегова же, наверное ;)
...
Рейтинг: 0 / 0
20.06.2006, 18:22
    #33803660
Guest_11111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
так часто встречаю это слово - а че такое "ИМХО" ?
...
Рейтинг: 0 / 0
20.06.2006, 18:28
    #33803682
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
Guest_11111так часто встречаю это слово - а че такое "ИМХО" ?
ИМХО, такие вопросы лучше в Гугле задавать, а не на форуме.
...
Рейтинг: 0 / 0
20.06.2006, 19:04
    #33803786
Guest_11111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
ну вот всё равно ж ответ писал! походу можноб былоб и ответить :)
...
Рейтинг: 0 / 0
21.06.2006, 08:13
    #33804248
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы
Guest_11111так часто встречаю это слово - а че такое "ИМХО" ?
IMHO - In My Humble Opinion
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / массивы / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]