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

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

Восстановить пароль Регистрация
 
globo
0 / 0 / 0
Регистрация: 26.07.2009
Сообщений: 13
26.03.2014, 20:01     Задание индекса для доступа к элементу массива в виде char * #1
по сабжу:

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

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

C++
1
2
3
4
5
map<char*, double> map1;
map1["nullvalue"] = 2.34;
map1["firstvalue"] = 1.4;
 
cout << map1["firstvalue"] << endl;
somebdy
7 / 7 / 1
Регистрация: 30.04.2013
Сообщений: 25
26.03.2014, 20:37     Задание индекса для доступа к элементу массива в виде char * #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;
}
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
26.03.2014, 21:09     Задание индекса для доступа к элементу массива в виде char * #6
Таки да, вы правы.
Различие адресов начала массивов char, даже при том, что текст в них одинаков, размножает элементы карты, вместо того, чтоб относится к одному и тому же элементу карты, как ожидалось мною ранее.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2014, 15:27     Задание индекса для доступа к элементу массива в виде char *
Еще ссылки по теме:

C++ Рекурсивная функция для вычисления индекса максимального элемента массива
C++ В чем отличие двумерного массива типа char от массива указателей на char?
C++ Что быстрее? Обращение к элементу массива или к элементу структуры?

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

Или воспользуйтесь поиском по форуму:
globo
0 / 0 / 0
Регистрация: 26.07.2009
Сообщений: 13
27.03.2014, 15:27  [ТС]     Задание индекса для доступа к элементу массива в виде char * #7
Благодарю за ответы. map - решение проблемы.
Yandex
Объявления
27.03.2014, 15:27     Задание индекса для доступа к элементу массива в виде char *
Ответ Создать тему
Опции темы

Текущее время: 01:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru