Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
globo
0 / 0 / 0
Регистрация: 26.07.2009
Сообщений: 14
1

Задание индекса для доступа к элементу массива в виде char *

26.03.2014, 20:01. Просмотров 364. Ответов 6
Метки нет (Все метки)

по сабжу:

C++
1
2
a["nullIndex"] = 2.3234;
a["firstIndex"] = 2.345e12;
Каким образом можно организовать такой доступ к элементам массива?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 20:01
Ответы с готовыми решениями:

Получение доступа к элементу массива не по индексу
Доброго времени суток дамы и господа. Возникла сложность с получением доступа к...

Не получается присвоить значение элементу массива указателей типа char *a[3]
В попытках разобраться с массивами, указателями, массивами указателей и т.п....

Свойство объекта в виде массива char заполняется только для одного объекта
Есть два свойства: одно - string, второе - массив char. Если начать заполнять...

Сложение / Вычитание / Умножение чисел записанных в виде массива char символов
доброго времени суток. такой вопрос, как мне сделать выше перечилненные...

Функция для нахождения индекса максимального элемента массива
Помогите написать функцию для нахождения индекса максимального элемента...

6
Wlk
90 / 90 / 48
Регистрация: 07.12.2011
Сообщений: 214
Завершенные тесты: 4
26.03.2014, 20:09 2
Можно попробовать использовать карту (map), в качестве ключа будет char*, а в качестве значения double.
C++
1
2
#include <map>
map<char*, double> map1;
0
somebdy
7 / 7 / 3
Регистрация: 30.04.2013
Сообщений: 25
26.03.2014, 20:13 3
С char* не прокатит, а вот с std::string да.
0
Wlk
90 / 90 / 48
Регистрация: 07.12.2011
Сообщений: 214
Завершенные тесты: 4
26.03.2014, 20:18 4
По крайней мере вот это сработало.

C++
1
2
3
4
5
map<char*, double> map1;
map1["nullvalue"] = 2.34;
map1["firstvalue"] = 1.4;
 
cout << map1["firstvalue"] << endl;
0
somebdy
7 / 7 / 3
Регистрация: 30.04.2013
Сообщений: 25
26.03.2014, 20:37 5
А так?
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 <map>
 
using map_t = std::map<char *, double>;
 
void foo(map_t & arr) {
    char str[] = "foo";
 
    std::cout << arr[str] << std::endl;
}
 
int main() {
    map_t arr;
 
    arr["foo"] = 2.25;
 
    std::cout << arr["foo"] << std::endl;
 
    foo(arr);
 
    return 0;
}
0
Wlk
90 / 90 / 48
Регистрация: 07.12.2011
Сообщений: 214
Завершенные тесты: 4
26.03.2014, 21:09 6
Таки да, вы правы.
Различие адресов начала массивов char, даже при том, что текст в них одинаков, размножает элементы карты, вместо того, чтоб относится к одному и тому же элементу карты, как ожидалось мною ранее.
0
globo
0 / 0 / 0
Регистрация: 26.07.2009
Сообщений: 14
27.03.2014, 15:27  [ТС] 7
Благодарю за ответы. map - решение проблемы.
0
27.03.2014, 15:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2014, 15:27

Рекурсивная функция для вычисления индекса максимального элемента массива
Написать рекурсивную функцию для вычисления индекса максимального элемента...

Введение в рекурсию. Заполнить массив типа char в виде десятичного числа, принимаемого в виде аргумента
Пытался написать функцию, которая заполняет массив типа char в виде десятичного...

Написать рекурсивную функцию для получения индекса максимального массива из 5 элементов
Написать рекурсивную функцию для получения индекса максимального массива из 5...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru