Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 05.09.2015
Сообщений: 2

Посоветуйте пожалуйста литературу по С++ для начинающих,желательно с пометкой "для тупых"

05.09.2015, 18:18. Показов 4746. Ответов 77
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна подробная литература по изучению С++,где было бы подробное объяснение каждого шага,наподобие книги "Изучаем HTML,XHTML и CSS" Э.Робсон и Э.Фримен. Буду очень благодарна за всю информацию
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.09.2015, 18:18
Ответы с готовыми решениями:

Посоветуйте литературу или желательно видео уроки базовые для работы с графикой на Delphi
Здравствуйте. У меня есть желание создать мини-игру на Delphi, хочу на диплом такой проект взять, но для начала нужно хорошо разобраться с...

Посоветуйте литературу по Си для начинающих
Посоветуйте литру по си для нулевых .

Посоветуйте литературу для начинающих (OpenGL/C++)
Посоветуйте пожалуйста литературу по OpenGL/C++ для начинающих ,ничего не могу найти нормального ,и желательно что-бы это была именно книга...

77
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.09.2015, 15:28
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от smartpointer Посмотреть сообщение
Попробуйте затолкать в любой класс в хеадере, а в конструкторе динамически выделить память для него. Дабы избавить вас от мазохизма - это невозможно, по причине неймспейсов, обычный шаблонный класс - возможно. Собственно зачем тогда нужны неймспейсы - если их так криво запилили ?
Мм ... звучит действительно как бред...
Может пример кода приведете?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
06.09.2015, 15:32
Цитата Сообщение от smartpointer Посмотреть сообщение
«Talk is cheap. Show me the code».©Linus Torvalds
говорите по-русски.
будьте вежливы.

покажите ваши наработки.

и тогда, может быть я захочу вам помочь,
и объясню что конекретно не так с вашим кодом
2
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
06.09.2015, 15:37
Цитата Сообщение от Bespridelschic Посмотреть сообщение
Т.е. динамическое связывание не относится к массивам?
Bespridelschic, cвязывание относится к любым блокам кода, которые можно выделить в какую-либо логическую конструкцию - будь то массив, переменная, объект класса, функция. Какие-то действия с любой из этих конструкций могут происходить на раннем этапе, т.е. во время компиляции программы (например, выделение памяти, сравнение, копирование и т.п.), тогда это будет раннее (статическое) связывание, а могут во время выполнения программы, тогда это будет позднее (динамическое) связывание.
1
 Аватар для smartpointer
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
06.09.2015, 16:28
Цитата Сообщение от Avazart Посмотреть сообщение
Мм ... звучит действительно как бред...
Может пример кода приведете?
Каюсь, таки проблему можно решить костылями, но теперь остается вопрос валидности кода. Суть думаю понятна заинклудить хеадер вектора в cpp оставив форвард декларацию в хеадере.
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//MyClass.h
#ifndef MYCLASS_H_INCLUDED
#define MYCLASS_H_INCLUDED
 
template<class T> class allocator;
template<class T,class Allocator = allocator<T> > class vector;
 
class MyClass
{
    vector<int>* ptr;
public:
    MyClass();
    ~MyClass();
};
#endif
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
30
//MyClass.cpp
#include "MyClass.h"
#include <iostream>
#include <vector>
 
MyClass::MyClass()
{
    ptr = (vector<int>*)new std::vector<int>;
    std::vector<int>* m_ptr = (std::vector<int>*)ptr;
    for(int i = 0; i < 10;++i)
        m_ptr->push_back(i);
    std::cout<<"Size after create..."<< m_ptr->size()<<std::endl;
    std::cout<<"Print..."<<std::endl;
    for(int i = 0; i < 10;++i)
       std::cout<< (*m_ptr)[i] <<std::endl;
    std::cout<<"Size after create..."<< m_ptr->size()<<std::endl;
}
 
MyClass::~MyClass()
{
    std::vector<int>* m_ptr = (std::vector<int>*)ptr;
    std::cout<<"Size before destruction..."<< m_ptr->size()<<std::endl;
    for(unsigned i = 0; i < m_ptr->size();++i)
        m_ptr->pop_back();
    std::cout<<"Size after pop..."<< m_ptr->size() <<std::endl;
    std::cout<<"Print..."<<std::endl;
    for(int i = 0; i < 10;++i)
       std::cout<< (*m_ptr)[i] <<std::endl;
    delete m_ptr;
}
C++
1
2
3
4
5
6
7
8
//main.cpp
#include "MyClass.h"
 
int main()
{
    MyClass m;
    return 0;
}
0
Заблокирован
06.09.2015, 16:45
Цитата Сообщение от Avazart Посмотреть сообщение
Ибо замыкания изменяю "внешние" переменные/состояния а это императивщина.
Avazart, Замыкания не изменяют переменные, а лишь дают к ним доступ. В ФП нет мутабельности. Совсем.

Цитата Сообщение от Avazart Посмотреть сообщение
Явно не лямбды и тем более не замыкания.
...тогда к какому подходу вы относите лямбды и замыкания, если не к функциональному?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
06.09.2015, 16:54
Цитата Сообщение от smartpointer Посмотреть сообщение
vector<int>* ptr;
А можно узнать на хрена это нужно? Учитывая что вектор меняет свой размер через метод resize, а не через сишное "создал новый массив, скопировал в него старый".
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
06.09.2015, 16:58
Цитата Сообщение от hoggy Посмотреть сообщение
чем "символьный массив, заканчивающийся нулем" отличается от "сишной строки" ?
Да Бог с ними с литералами, мы же с вами понимаем, что использование сишных строк в плюсовой программе - это объявление переменных этого типа и их обработка с помощью сишных функций. Литералы - это как бы за уши уже к этой теме.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
06.09.2015, 17:00
Народ, ТС написал 1 сообщение на форуме. А мы тут флуд развели.

Elena_Dem, читайте книги из прикреплённой темы "Литература С++". Что Вам больше подойдёт, что будет понятнее, то и выбирайте.
Как правило, выбирают одну книгу из этого списка.
Вопросы будут возникать в любом случае. На форуме Вам помогут в случае затруднений. Ну и гугл тоже никто не отменял.
0
 Аватар для smartpointer
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
06.09.2015, 17:20
Цитата Сообщение от Renji Посмотреть сообщение
А можно узнать на хрена это нужно? Учитывая что вектор меняет свой размер через метод resize, а не через сишное "создал новый массив, скопировал в него старый".
Вы похоже не в теме, цель была узнать смогут ли кресты осилить предварительное объявление объекта объявленного в неймспейсах - на примере std::vector, дабы уменьшить compile time в случае, если хеадер постоянно дергается другими хеадерами. Как видно из примера такое в принципе реально через ... ну я с таким же успехом могу заюзать void* и приводить известный мне тип к std::vector<int>*. Проблема в непродуманности неймспейсов - поскольку, чтобы обратиться через std:: - компилятор должен посмотреть само объявление этого неймспейса - что не подходит в условиях предварительного объявления. Жду ответа Хогги, говорит что писал подобный код...
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
06.09.2015, 17:29
Цитата Сообщение от smartpointer Посмотреть сообщение
Вы похоже не в теме, цель была узнать смогут ли кресты осилить предварительное объявление объекта объявленного в неймспейсах - на примере std::vector, дабы уменьшить compile time в случае, если хеадер постоянно дергается другими хеадерами.
Дергается, натыкается на include guard, игнорируется. Что-то мне подсказывает, что основное compile time уходит не на парсинг хедеров, а на шаманства с оптимизацией кода. И вы пытаетесь заниматься экономией на спичках.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.09.2015, 18:54
Цитата Сообщение от smartpointer Посмотреть сообщение
Каюсь, таки проблему можно решить костылями, но теперь остается вопрос валидности кода. Суть думаю понятна заинклудить хеадер вектора в cpp оставив форвард декларацию в хеадере.
Ну вот еще один решатель через одно место, ну не делается это так, шаблоны полностью объявляются в заголовке.
При чем тут нейспейсы блин....
Время компиляции не проблема нейспейсов, и если вообще есть проблема...

Добавлено через 3 минуты
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Avazart, Замыкания не изменяют переменные, а лишь дают к ним доступ. В ФП нет мутабельности. Совсем.
По край ней мере в С++ можно передавать по ссылке. К тому же результат должен зависит от входных параметров, а не глобальных.
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
..тогда к какому подходу вы относите лямбды и замыкания, если не к функциональному?
Ни к какому, это лишь вид записи/синтаксиса, вероятно призванный локализовать функцию.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
06.09.2015, 19:31
Цитата Сообщение от smartpointer Посмотреть сообщение
Вы похоже не в теме, цель была узнать смогут ли кресты осилить предварительное объявление объекта объявленного в неймспейсах
1.
кресты не умеют предварительное объявление объекта.
кресты умеют предварительное объявление типа.

2.
крестам глубоко фиолетово, есть там неймспейсы или нет.


Цитата Сообщение от smartpointer Посмотреть сообщение
дабы уменьшить compile time в случае, если хеадер постоянно дергается другими хеадерами.
это у вас такой способ:
уменьшить время компиляции, за счет увеличения времени в рантайме?

давайте будем медленно работать в рантайме,
и жрать больше памяти.
зато компиляция пройдет на парочку наносекунд быстрее?

если вас так сильно парит временя компиляции,
то откройте для себя "предварительно скомпилированные заголовки".

Цитата Сообщение от smartpointer Посмотреть сообщение
Как видно из примера такое в принципе реально через
совершенно логично, что форвард можно использовать только в случаях,
когда не требуется знания о размерах или строении типа.

в связи с этим данный ваш тезис сомнителен.
вы вообще чего хотели от форварда?
0
 Аватар для smartpointer
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
06.09.2015, 20:34
Цитата Сообщение от hoggy Посмотреть сообщение
2.
крестам глубоко фиолетово, есть там неймспейсы или нет.
Вы вроде упомянули, что писали код ну так продемонстрируйте пути обхода, тем более, что суть вы уловили и уже попытались это сделать, подсказку в виде полурабочего кода я вам дал.Остальное меня не интересует - докажите, что неймспейсы это не мусор, который придумал Страуструп.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
06.09.2015, 20:54
Цитата Сообщение от smartpointer Посмотреть сообщение
Вы вроде упомянули, что писали код ну так продемонстрируйте пути обхода, тем более, что суть вы уловили и уже попытались это сделать, подсказку в виде полурабочего кода я вам дал.Остальное меня не интересует - докажите, что неймспейсы это не мусор, который придумал Страуструп.
Если бы не было наймспейса std, это как-то помогло бы решить вашу задачу?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
06.09.2015, 21:00
Цитата Сообщение от smartpointer Посмотреть сообщение
Вы вроде упомянули, что писали код ну так продемонстрируйте пути обхода
есть предположение, что вы просто не в теме.
судя по тому, что вы несете - вы сами не понимаете чего хотите.

если хотите разобраться - см #62

Цитата Сообщение от smartpointer Посмотреть сообщение
Остальное меня не интересует - докажите, что
я никому ничего не доказываю,
если не имею с этого прямой выгоды.
0
 Аватар для smartpointer
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
06.09.2015, 21:35
Цитата Сообщение от Renji Посмотреть сообщение
Если бы не было наймспейса std, это как-то помогло бы решить вашу задачу?
Ну так вы попробуйте объявите простой шаблонный класс - без неймспейсов, это сработает, и можно будет объявить указатель на этот класс в классе. Возникает резонный вопрос - есть классы для инкапсуляции, зачем еще что-то выдумывать то что не работает ?
Цитата Сообщение от hoggy Посмотреть сообщение
есть предположение, что вы просто не в теме.
судя по тому, что вы несете - вы сами не понимаете чего хотите.
если хотите разобраться - см #62
Я уже все понял для себя, в данный момент не вижу продолжать дальнейший разговор с вами, так как у вас нет аргумента в виде кода, про который вы говорили. Значит ставим точку, namespace есть очень плохо продуманная конструкция в C++, которая ограничивает программиста в свободе выбора.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
06.09.2015, 21:38
Цитата Сообщение от smartpointer Посмотреть сообщение
Ну так вы попробуйте объявите простой шаблонный класс - без неймспейсов, это сработает, и можно будет объявить указатель на этот класс в классе.
От объявления класса вы отказались в тот момент, когда не захотели пользоваться хедером с этим самым объявлением. Причем тут неймспейсы?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
06.09.2015, 21:50
Цитата Сообщение от Renji Посмотреть сообщение
Если бы не было наймспейса std, это как-то помогло бы решить вашу задачу?
есть предположение,
что проблема господина smartpointer
связанна не с неймспейсами, а с шаблонами.

а хочет он что-то вроде:

http://rextester.com/MBTLK54406



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
30
31
32
33
34
// --- предположим, это - наш хэдэр
 
namespace std {
    
    // предварительное объявление
    
    template <class T> 
        class allocator;
    
    template< class T, class Allocator> 
        class vector;
        
}//namespace std 
 
 
// можно использовать в выражениях,
// не требующих знания о размере типа
std::vector<int, std::allocator<int> >* ptr;
 
 
 
 
// --- предположим, это - наш спп файл
 
#include <iostream>
#include <vector>
 
 
int main()
{
    std::cout << "Hello, world!\n";
    
    ptr = new std::vector<int>;
}
Добавлено через 1 минуту
Цитата Сообщение от smartpointer Посмотреть сообщение
Я уже все понял для себя, в данный момент не вижу продолжать дальнейший разговор с вами, так как у вас нет аргумента в виде кода
ваша ошибка в том, что вы, вместо того, что бы просто задать вопрос,
начинаете понты колотить и брать меня на слабо.

со мной этот деццкий сад не прокатывает.

Добавлено через 2 минуты
Цитата Сообщение от smartpointer Посмотреть сообщение
Значит ставим точку, namespace есть очень плохо продуманная конструкция в C++
кастрюля не виновата, что повар не умеет готовить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.09.2015, 21:50

Посоветуйте хорошую литературу для начинающих!
Начал читать книгу Пирогова, дает код и комментарии и все, хотелось что бы в книге разжевывали про все элементы программы, функциии, а то...

Посоветуйте литературу для начинающих и источник программ
Привет всем. Я в линуксе чистейшей воды новичок. Недавно выбрал для себя начать засиживаться в openSUSE...понравился KDE по внешнему виду....

Посоветуйте литературу по Lua и Corona SDK для начинающих
Знаю Delphi, c++, assembler. Последний немного. Посоветуйте с чего начать изучение Lua и Corona SDK для Lua.

Подскажите пожалуйста литературу для самых начинающих
В школе очень любил турбо паскаль хочу переучиться на плюсах

Посоветуйте плз какую то литературу для начинающих. Темы- HTML и JavaSkript
Темы- HTML и JavaSkript


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
78
Ответ Создать тему
Новые блоги и статьи
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru