Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 13.08.2013
Сообщений: 17

как создать копию объекта, на который ссылается итератор?

02.11.2013, 20:37. Показов 2026. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть шаблонная фукнция, в которую передается итератор с произвольным доступом (IT).

Необходимо внутри функци создать копию элемента *IT.

подскажите, как сделать можно это?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2013, 20:37
Ответы с готовыми решениями:

Как создать копию объекта на который указывает указатель
У меня есть указатель класс Student, который хранит информацию о студентах(имя, фамилию, телефон) в строках в стиле Си, то есть private...

Удаление объекта, на который ссылается TreeView
Имеется класс TClass (поля "Name","price","Color"). Создаю динамический массив объектов таких классов: MassOfMyClass:array of TClass; ...

Как создать копию объекта?
Как создать копию объекта а не еще одну ссылку на объект........?

8
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
02.11.2013, 21:21
....

Добавлено через 15 минут
Возможно как то так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
typedef vector<int>::iterator iter;
 
template<class T, class Val> 
void func(T arg)
{
     Val res = *arg;
     
     cout <<  res;        
    
}
 
int main()
{
   vector<int> col;
         
   col.push_back(1);
      
   iter pos = col.begin();
      
   func<iter, int>(pos);
}
0
0 / 0 / 0
Регистрация: 13.08.2013
Сообщений: 17
02.11.2013, 22:57  [ТС]
а нельзя ли сделать это, не добавляя ничего в template ?

хотя бы для случая, когда IT - это vectot<foo>::iterator ?
0
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
02.11.2013, 23:19
Цитата Сообщение от trympyrym Посмотреть сообщение
а нельзя ли сделать это, не добавляя ничего в template ?
ну вам же нужна была шаблонная функция, для функция параметры по умолчанию поставить нельзя...выход реализовать :

Цитата Сообщение от trympyrym Посмотреть сообщение
хотя бы для случая, когда IT - это vectot<foo>::iterator
0
0 / 0 / 0
Регистрация: 13.08.2013
Сообщений: 17
02.11.2013, 23:52  [ТС]
Цитата Сообщение от Хулиган Посмотреть сообщение
ну вам же нужна была шаблонная функция, для функция параметры по умолчанию поставить нельзя...выход реализовать :
Я вот что имею в виду:

есть функция:
C++
1
2
template <class Iterator>
???? function(Iterator IT1, ....)
вызывается она так:

C++
1
function<vector<foo>::iterator>(...)
Менять интерфейс функции мне крайне не рекомендуется. В функцию передаются только итераторы. Известно, что это итераторы вектора, в котором хранятся данные (неизвестного [точнее, известного, но различного при различных вызовах функции]) типа foo. Внутри функции нужно сделать копию *IT1.

Возможно ли такое?
0
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
03.11.2013, 00:04
trympyrym, как вариант в этой функции можно динамически разместить те данные, на которые указвает итератор.
То есть что-то типа
Code
1
2
3
4
5
func(iter_type i) {
    foo *clone = new foo(*i);
    // . . .
    return *clone;
}
нужно только чтобы foo имел вменяемый копирующий конструктор. И не потеряйте указатель clone, а то утечка)
0
0 / 0 / 0
Регистрация: 13.08.2013
Сообщений: 17
03.11.2013, 00:54  [ТС]
Тип foo в функцию напрямую не передается. Более того, при различных вызовах функции он различный. Поэтому так просто объявить клона не удастся.
0
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
03.11.2013, 01:05
Цитата Сообщение от trympyrym Посмотреть сообщение
Более того, при различных вызовах функции он различный
ну так берите первый вариант данной функции = можно использовать разные типы
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
03.11.2013, 01:38
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <iterator>
#include <vector>
 
template<typename Iterator>
typename std::iterator_traits<Iterator>::value_type function(Iterator iter)
{
   typename std::iterator_traits<Iterator>::value_type retVal = *iter;
   return retVal;
}
 
int main()
{
   std::vector<int> v {1,2,3,4,5};
   std::cout << function(v.begin() + 2) << std::endl;
 
   return 0;
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.11.2013, 01:38
Помогаю со студенческими работами здесь

Как создать копию объекта
Не могу найти ни в документации ни в других местах как можно создать копию (независимую) объекта, а как ссылку на объект метод...

Как создать копию объекта любого класса?
Set MyObj = AnyObj присваивает MyObj ссылку на объект AnyObj. Как скопировать объект целиком ? (класс содержит слишком много внутренних...

Как создать копию объекта, зная его указатель?
Здравствуйте, существует следующая проблема. В своей программе я рисую график используя класс QwtPolarPlot. По нажатию на график, должно...

Как создать копию или клон объекта массива в Java?
Не получается склонировать массив. Подскажите, как правильно создать копию массива. Буду очень благодарен! Спасибо!

Создать дерево объектов, каждый из которых ссылается на два других объекта
Решаю задачи по самоучителю Васильева. Вот подвис на одной задаче. Написать программу для создания, на основе конструктора, дерева...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru