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

clas Char_vec - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ C++ http://www.cyberforum.ru/cpp-beginners/thread363048.html
Здравствуйте!:curtsy: Помогите пожалуйста с задачами.:gsmile: 1. Программа вводит с клавиатуры массив действительных чисел до тех пор, пока пользователь не введет "0"(нуль). Данный массив...
C++ не могу разобраться с процедурой ввода и вывода программа рабочая подскажите плиз Разработать схему алгоритма и программу, используя функции с параметрами для ввода массива и его обработки. В массиве хранятся данные об осадках за месяц. Найти • Количество дней с осадками больше... http://www.cyberforum.ru/cpp-beginners/thread363047.html
Извлечение корня, длинная арифметика C++
По заданному натуральному числу А требуется найти наибольшее число В такое, что B^2 <= A. вот набросал, но прога работает медленно. как ее можно оптимизировать или подскажите более быстрый способ....
C++ Найти "средний" по величине делитель числа
Надо найти "средний" по величине делитель числа х.Использовать прибавление 1 = + - х :-целочисленное деление и %-остаток от деления. 3.3 Запрещено создавать темы с бессмысленными названиями вроде...
C++ странная последовательность http://www.cyberforum.ru/cpp-beginners/thread363025.html
Во входном файле записана последовательность чисел в странном формате: у каждого числа сначала записано количество цифр в этом числе, а потом через пробел - сами цифры. Последовательность...
C++ Линейные Односвязные Списки С++ Разработать и реализовать программу создания и обработки линейного односвязного списка с одним информационным полем, которое содержит целое число. Программа должна содержать меню с перечнем... подробнее

Показать сообщение отдельно
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517

clas Char_vec - C++

08.10.2011, 14:53. Просмотров 296. Ответов 0
Метки (Все метки)

Решаю тут задачки Страуструпа и наткнулся на вот такую:
Код
Рассмотрим: 
class Char vec 
{ 
int sz; 
char element [ 1 ] ; 
public: 
static Char_vec* new char vec {int s) ; 
char& operator [] (int i) { return element [i] ; } 
}; 

Определите new char vec (), выделяющую непрерывную память для Char vec 
таким образом, чтобы доступ к элементам мог осуществляться по индексу  
через element. При каких обстоятельствах этот трюк может вызвать серьезные 
проблемы?
Но что-то я не понял как же её решать, ведь у нас фиксированный размер element изначально, а Страуструп хочет чтобы мы потом могли к i элементу обращаться, можно бы было использовать realoc, но ведь element это не указатель и новый адрес ему не присвоить ... в общем пишите Ваши варианты, моежет кто уже решал эту задачку
Я немного модифицировал класс и у меня получилось такое
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
#include <iostream>
using namespace std;
 
class Char_vec
{
    int sz;
    char *element;
 
public:
        Char_vec(int size):sz(size){element=new char[sz];}
        static Char_vec* new_char_vec (int s);
        char& operator[] (int i){return element[i];}
};
 
Char_vec* Char_vec::new_char_vec (int s)
{
    Char_vec *temp=new Char_vec(s);
    return temp;
}
 
int main()
{
    Char_vec test(2);
    Char_vec *test2;
    test2=test.new_char_vec(10);
    (*test2)[9]='X';
    cout<<(*test2)[9];
 
}
Но не думаю что это то что хотел Страуструп ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru