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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
globo
0 / 0 / 0
Регистрация: 26.07.2009
Сообщений: 13
#1

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

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

по сабжу:

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++ Написать функцию replace для массива char'ов
C++ Выдает ошибку "Неверный тип для индекса массива"
Введение в рекурсию. Заполнить массив типа char в виде десятичного числа, принимаемого в виде аргумента C++
C++ Функция для нахождения индекса максимального элемента массива
C++ Ошибка: нет операции доступа к элементу
C++ Ошибка "неверный тип для индекса массива" при работе с двумерным массивом
C++ Динамическое выделение памяти для массива указателей на char
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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++ Рекурсивная функция для вычисления индекса максимального элемента массива
Допустимо ли вместо индекса массива использовать i-ый элемент другого массива? C++
Есть ли способ доступа к элементу списка по индексу? C++
Написать рекурсивную функцию для получения индекса максимального массива из 5 элементов C++
C++ Сложение / Вычитание / Умножение чисел записанных в виде массива char символов

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

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

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