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

Подскажите как переписать класс с использованием умных указателей, либо STL - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ где ошибка в программе подскажите http://www.cyberforum.ru/cpp-beginners/thread1214194.html
здравствуйте помогите плиз. каждую входящую "*" должно менять на "??"(считывается из файла)но выдает чепуху что в файле забито #include<iostream> #include<fstream> #include<string> int n,i; using namespace std; void main() {setlocale(0,""); ifstream in("D:\\1.txt"); if(!in){cout«"Ошибка!."«endl; system("pause");}
C++ Упражнение на строки Петя записался в кружок по программированию. На первом занятии Пете задали написать простую программу. Программа должна делать следующее: в заданной строке, которая состоит из прописных и строчных латинских букв, она: -удаляет все гласные буквы, -перед каждой согласной буквой ставит символ ".", -все прописные согласные буквы заменяет на строчные. Гласными буквами считаются буквы "A", "O",... http://www.cyberforum.ru/cpp-beginners/thread1214177.html
C++ Что лучше использовать для работы со строками класс wstring или wchar_t напрямую?
Всем привет! Мучает меня один вопрос: как грамотнее и безопаснее работать со строками: 1) Создавать экземпляр класса wstring и работать с ним. 2) Создавать строку при помощи wchar_t, затем использовать функции класса wstring для работы с ней.
C++ Как заменить символ "*" на "??"
доброго вечера. подскажите пожалуйста у меня по заданию идет заменить каждую встречающуюся * на ??(считываемую из файла). я понял как заменить * на ?, но как на ??. добавлю листинг который сделал.буду очень благодарен.#include<iostream> #include<fstream> using namespace std; void main() {setlocale(0,""); char name; cout<<"введите путь к файлу и нажмите ENTER"<<endl; cin.getline(name,80);...
C++ Определить, какие буквы слов совпадают чаще: первые, последние или средние (Pascal -> C++) http://www.cyberforum.ru/cpp-beginners/thread1214146.html
Задача: Дан текст, состоящий из слов, разделенных пробелом. Определить, какие буквы совпадают чаще: первые, последние или средние. Текст программы: uses crt; procedure Byki(s : string); var first, last, mid : char; i, i_first, i_last, i_mid : byte;
C++ Создать массив R, элементы которого вычисляются по указанной формуле Создать массив R, элементы которого вычисляются по указанной формуле подробнее

Показать сообщение отдельно
Divergence
 Аватар для Divergence
7 / 7 / 0
Регистрация: 19.06.2013
Сообщений: 174
22.06.2014, 06:14     Подскажите как переписать класс с использованием умных указателей, либо STL
К сожалению, знания об умных указателях и библиотеке STL прошли мимо меня...
Сейчас пытаюсь восполнить этот пробел, но уже третий день не могу понять как этим пользоваться.
Очень прошу помочь мне, показав, как описанный ниже класс перевести на умные указатели, или на векторы:

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
class test
{
private:
int           Amount;
int            x;
float*        y;
double**    z;
 
public:
 
test(int fAmount)
{
Amount = fAmount;
x = Amount;
y = new float[Amount];
z = new double*[Amount];
for(int i = 0; i < Amount; i++)
z[i] = new double[Amount];
}
 
~test(void)
{
delete[] y;
for(int i=0;i<Amount;i++)
{delete[] z[i];}
delete[] z;
}
 
};
Я сначала думал не сдаваться и писать в старом стиле, но когда увидел то огромное количество двумерных массивов , с которым придется работать, а значит и прописывать руками их удаление в деструкторе, просто сник.
Теперь читаю про умные указатели и про STL. Плохо понимаю что происходит.
Вот вопросы:
1) Умный указатель сам удаляет объект, когда это необходимо? Поддерживаются ли двумерные массивы?
2) Какой из классов STL лучше всего подойдет для замены стандартных двумерных массивов? Я правильно понял, что это vector?
3) Можно ли явно указать умному указателю и классу vector когда они больше не нужны? (например, создать двумерный вектор vec, затем написать vec.destroy() и он сразу исчезнет).
Буду благодарен за любую помощь, так как почему-то мозг затупил и никак не хочет воспринимать инструментом прочитанное мной об этом всем...

Добавлено через 1 час 18 минут
Сейчас усердно пытаюсь сделать вместо двойных указателей двойной вектор.
У меня получилось реализовать это в функции (все оказалось довольно просто).
Но как мне засунуть двумерный вектор в переменную класса???

Вот, что я использую внутри функции:

C++
1
vector< vector<int> > Matrix    (   n, vector<int>(m)   );
А как это засунуть в класс?
C++
1
2
3
4
5
6
7
8
9
class vec
{
private:
//Двумерный вектор, размер которого будет определен позже
 
public:
vec();
~vec();
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru