С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
13 / 10 / 1
Регистрация: 27.03.2011
Сообщений: 164

не получается сделать задание с оператором ->

21.06.2011, 19:02. Показов 1459. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//тема про оператор стрелка -> я так понимаю задание надо сделать с использованием этого оператора
//напишите программу, в которой определен вектор указателей на строки. Организуйте
//перебор вектора с отображением каждой строки и ее размера
#include <iostream>
#include <vector>
#include <string>
using namespace std;   
 
int main()
{
    string word;
    vector<string> *ptr;
 
    while (cin >> word)
        ptr->push_back(word);
 
    for(vector<string>::iterator iter=ptr->begin(); iter!=ptr->end(); ++iter)
        cout << ptr << " = " << ptr->size() << " simbols";
 
    system("pause");
    return 0; 
}
ошибка: использована переманная ptr без инициализации... помогите сделать задание
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.06.2011, 19:02
Ответы с готовыми решениями:

не получается сделать 10 и 15 задание?
Начал решать 10 и 15 задание, помогите, как понял в 10 лучше отсортировать а потом проверять элементы,в 15 вроде формула |R*i-R*j|

Не получается сделать задание по MS Access
Дана база сотрудников НИИ. В каждой лаборатории имеется несколько сотрудников ( в одной один ). В запросе &quot;Максимальная з/п...

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

15
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
21.06.2011, 19:17
память нужно выделить под вектор
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <string>
 
int main()
{
        std::string word;
        std::vector<std::string> * ptr = new std::vector<std::string>();
 
        while (std::cin >> word)
                ptr->push_back(word);
 
        for(std::vector<std::string>::iterator iter=ptr->begin(); iter!=ptr->end(); ++iter)
                std::cout << *iter << " = " << iter->size() << " simbols\n";
 
        system("pause");
        delete ptr;
        return 0; 
}
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
21.06.2011, 19:20
А начать можно с того, что
C++
1
vector<string> *ptr;
не соответствует заданию. Это указатель на вектор, а в задании про вектор указателей
0
13 / 10 / 1
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 19:28  [ТС]
Цитата Сообщение от grizlik78 Посмотреть сообщение
А начать можно с того, что
C++
1
vector<string> *ptr;
не соответствует заданию. Это указатель на вектор, а в задании про вектор указателей
а вектор указателей как сделать?

C++
1
vector<string*> ptr
так?
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
21.06.2011, 19:30
Да. Ну а под каждую строку надо выделять память, как уже было справедливо замечено.
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
21.06.2011, 19:32
Цитата Сообщение от grizlik78 Посмотреть сообщение
Да. Ну а под каждую строку надо выделять память, как уже было справедливо замечено.
и в конце работы программы пройтись по вектору и освободить
0
13 / 10 / 1
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 19:42  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <string>
using namespace std;   
 
int main()
{
    string word;
    vector<string*> ptr=new vector<string>();
 
    while (cin >> word)
        ptr->push_back(word);
 
    for(vector<string>::iterator iter=ptr->begin(); iter!=ptr->end(); ++iter)
        cout << *iter << " = " << iter->size() << " simbols" << endl;
 
    system("pause");
    delete [] ptr;
    return 0; 
}
теперь new и ptr подчеркнуты везде...
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
21.06.2011, 19:50
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
#include <string>
 
int main()
{
    std::string word;
    std::vector<std::string*> ptr;
 
    while (std::cin >> word)
        ptr.push_back(new std::string(word));
 
    for(std::vector<std::string*>::iterator iter = ptr.begin(); iter != ptr.end(); ++iter)
    {
    std::cout << (*iter)->c_str() << " = " << (*iter)->size() << " simbols\n";
           //альтернатива std::cout << **iter << " = " << (*iter)->size() << " simbols\n";
    delete *iter;
    }
 
    system("pause");
    return 0; 
}
1
13 / 10 / 1
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 19:57  [ТС]
Цитата Сообщение от Maxwe11 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
#include <string>
 
int main()
{
    std::string word;
    std::vector<std::string*> ptr;
 
    while (std::cin >> word)
        ptr.push_back(new std::string(word));
 
    for(std::vector<std::string*>::iterator iter = ptr.begin(); iter != ptr.end(); ++iter)
    {
    std::cout << (*iter)->c_str() << " = " << (*iter)->size() << " simbols\n";
           //альтернатива std::cout << **iter << " = " << (*iter)->size() << " simbols\n";
    delete *iter;
    }
 
    system("pause");
    return 0; 
}
спасиб, только зачем в выводе писать (*iter) если оператор -> как раз сделан для того, чтобы не писать
C++
1
(*iter).size()
в книге так и написано, что он как раз для того, чтобы была простая запись типа
C++
1
iter->size()
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
21.06.2011, 20:01
Olejeg85, суть итератора - указатель, а у вас в контейнере что лежит? указатель на стринг, значит итератор будет указателем на указатель, потому сначала разыменовуем итератор и через -> обращаемся к методам стринга
1
13 / 10 / 1
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 20:02  [ТС]
Цитата Сообщение от Maxwe11 Посмотреть сообщение
Olejeg85, суть итератора - указатель, а у вас в контейнере что лежит? указатель на стринг, значит итератор будет указателем на указатель, потому сначала разыменовуем итератор и через -> обращаемся к методам стринга
ясненько пасиб )
0
21.06.2011, 20:53

Не по теме:

Ппц, извращение так смешивать STL и указатели... ИМХО

0
13 / 10 / 1
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 21:13  [ТС]
а в рабочик программах используются массивы указателей или векторы указателей? если да то в каких? просто не понимаю зачем их использовать, если можно обходится в программах и без них?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
21.06.2011, 21:17
Olejeg85, да, при наследовании удобнее всего оперировать массивом (вектором) указателей на базовый класс, чтобы правильно вызывались виртуальные функции. Правда, для тех же целей можно применить ссылки, но я как-то всегда пользовался именно указателями.
1
13 / 10 / 1
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 21:19  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
Olejeg85, да, при наследовании удобнее всего оперировать массивом (вектором) указателей на базовый класс, чтобы правильно вызывались виртуальные функции. Правда, для тех же целей можно применить ссылки, но я как-то всегда пользовался именно указателями.
аа, пасибки, как раз скоро до классов дойду, а там уже не за горами и наследование, вирт функции и шаблоны ))

а использовать в качестве доступа к методу оператор . или -> это дело вкуса или есть более принципиальные причины использования оператора стрелки?
0
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
21.06.2011, 21:27
Olejeg85, дело вкуса, но ведь -> удобнее чем (*).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.06.2011, 21:27
Помогаю со студенческими работами здесь

Не получается сделать задание с мат. логикой
Под А и В сделал, а под Б не получается. Помогите пожалуйста!

Не получается сделать 6е задание 3й главы из книги Бьярне Страуструп
Здравствуйте, я совсем не давно начал изучать C++ и начал с книги Бьярна Страуструпа, и остановился на заданиях с 3й главы, а конкретно...

Задание с оператором for и do while
Разработайте программу, которая выполняет вычисления с числами, которые вводятся с клавиатуры (оператор for) и находятся в заданном...

Задание c оператором goto
Пользователь с клавиатуры вводит числа. Посчитать их сумму и вывести на экран, как только пользователь введет ноль. Примечание: Ввод...

Задание с оператором выбора CASE
Напишите программу, которая по введенному номеру месяца года выводит количество дней в месяце.


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru