Re: c++, как работать с контейнерами STL?

slonishka

1. в vector /./ a [10] ты создал десять своих ебанутых векторов
2. ты забыл одну закрывающую треугольную скобку
3. у мультимапа слишком хитрый [] даже по меркам си++
4. не пиши на си++, пожалуйста
5. .
6. PROFIT!
ЗЫ: я компилятор си++!

slonishka

массив не подходит: слишком велики накладные расходы на его пересоздание в динамической памяти.

это бред, не привязанный к реальной задаче, от которой тут все зависит.

Если этот монстр оживет, считаться будет быстро

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

пунктом один ты меня озадачил, не скрою

что тебя озадачило? я тебе указал на все ошибки в твоем коде, в том числе и на главную.
монстр оживет, если ты все их исправишь. но лучше не надо.
вот код, который компилится, тебе осталось разобраться с особенностями multimap::operator[].
они сильно зависят от того, что конкретно тебе нужно.
code:#include string
#include vector
#include map int main
{ std::vector std::map std::string, std::map int, std::string a; std::string c ("string"); int k = 0; // std::map std::string, std::map int, std::string &v1 = a[k]; // std::map int, std::string &v2 = a[k][c]; a[k][c][k] = c; return 0;
}

Serab

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

rosali

vector multimap string, multimap int,string

может такое сойдет
code: map pair string, int, vectorstring a[10];
a[0][make_pair("abc",42)].push_back("klm");

okis

Можно переопределить operator, , убрав таким образом make_pair из этой записи.

rosali

переопределять запятую моветон просто круглые скобки можно определить. ну там
code:
struct mymap : public map. { operator (stroka s, int n) {.} }

erotic

В ответ на:
4. не пиши на си++, пожалуйста

Щас Бачан напишет нужный контейнер на C в три строчки. Дрочу F5, предвкушая.

slonishka

Щас Бачан напишет нужный контейнер на C в три строчки. Дрочу F5, предвкушая.

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

Serab

а как тогда узнавать языки? На самом деле пока не писал на языке, ты его не знаешь

slonishka

а как тогда узнавать языки?

спросить на форуме и послушать моего мудрого совета.

apl13

code:import Data.Map
import Data.Vector
import Array main = do let a :: Array Int (Map (String,Int) (Vector String a = array (0,9) [(0,Map.singleton ("abc",42) $Vector.singleton "klm")] return

Maurog

import Array

о перформансе мы тактично умолчим

serega1604

я не помню, озвучивал ли я тут эту мысль или нет - возьми sqlite и не еби мозг.

otervada

работает, кстати. Через костыли пока, правда: const_iterator надо заводить и просто iterator. пары делать ( equal_range, как вариант).
а проблему "вставить в нужное место" пока решил добавлением пробелов в начало строки. тоже костыль, конечно.
Но такова структура мультимапа: он при вставке упорядочивает.
а если не писать на языке, его и не выучиь (как тут верно подметили).
Я же не коммерческий продукт пишу
Оставить комментарий
Имя или ник:
Комментарий: