---
title: "Dynamisk array"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/84294-dynamisk-array"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Alpha II"
published: "2003-08-15T10:16:39.000Z"
updated: "2005-12-05T21:07:49.000Z"
replies: 12
views: 1198
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/84294-dynamisk-array"
---

# Dynamisk array

## #1 — Alpha II, 2003-08-15T10:16Z

Jag har en dynamisk array av min egedefinierad typ INIDATA. Hur gör jag för att lägga till ett 'object' till på arrayen?

Permalänk: https://www.webforum.nu/p/84294

## #2 — PeW, 2003-08-15T10:24Z

Allokerar mer (nytt) utrymme

Permalänk: https://www.webforum.nu/p/1138762

## #3 — Alpha II, 2003-08-15T13:39Z

Hur? Har försökt på lite olika sätt att göra det men akka försök resulterar i att programmet kraschar.

Permalänk: https://www.webforum.nu/p/1138855

## #4 — Phorpher, 2003-08-15T13:52Z

Ta en titt på funktionen realloc().

Med den kan du allokera mer plats i en array. Dvs. du kan utöka storleken på din array med X antal bytes.

Permalänk: https://www.webforum.nu/p/1138861

## #5 — Alpha II, 2003-08-15T16:33Z

Jag får det inte att fungera!

```
void INIFILE::SetKey(char *key, char *value)
{
	int pos;
	if(KeyExist(key,&pos)==true)
	{
		strcpy(section_data[pos].value, value);
	}
	else
	{
		section_keys++;
		section_data = (INIDATA*) realloc(section_data, section_keys * sizeof(INIDATA));
		strcpy(section_data[section_keys].key,key);
		strcpy(section_data[section_keys].value,value);
	}
}
```

Funderar på om det kanske vore smartare att använda sig av en länkadlista? Eller helt enkelt vara lat och använda färdig kod för att läsa och srkiva ini filer...

Permalänk: https://www.webforum.nu/p/1138915

## #6 — PeW, 2003-08-15T16:40Z

realloc är en funktion i ett C - lib, så det är bara dumt att blanda in den i C++. Länkad lista är kalas i ditt fall, alternativt allokera nytt med new men det känns onödigt då det redan finns så bra saker i STL  :)

Permalänk: https://www.webforum.nu/p/1138922

## #7 — Alpha II, 2003-08-15T17:41Z

Får jag lov att programmera min länkadelist själv?

Permalänk: https://www.webforum.nu/p/1138950

## #8 — PeW, 2003-08-15T19:31Z

Nah! Kolla efter 'container' i STL-länken under relaterade länkar. Du kan ju exempelvis använda std::vector istället för list  ;)

Permalänk: https://www.webforum.nu/p/1138994

## #9 — Alpha II, 2003-08-15T20:44Z

Så jag inkluderar 'vector' och skapar en vector genom att skriva 'vector\<INIDATA\> minvector;' ? Kompilatorn gillar inte mitt försök i alla fall ;)

Permalänk: https://www.webforum.nu/p/1139027

## #10 — Alpha II, 2003-08-15T21:28Z

Okej. Har lyckats få det att fungera nu och tror jag har kommit på hur vector fungerar :)

Har gjort om helt i min klass efter att ha insett att det blev alldeles för krångligt att göra som jag hade gjort.

Nu har jag ett nytt problem.
Hur sorterar jag vektorn i bokstavsordning efter 'section'?

```
	struct INIDATA
	{
		char section[256];
		char key[256];
		char value[256];
	};
```

Permalänk: https://www.webforum.nu/p/1139044

## #11 — PeW, 2003-08-16T07:59Z

Kolla vidare under STLs containers och på 'sort' och 'compare'. Finns nog en del frågor om detta redan på forumet så sök även här.

Permalänk: https://www.webforum.nu/p/1139098

## #12 — Alpha II, 2003-08-26T13:35Z

Oh var lite förvirrad när jag skrev det där. Kom på att jag inte alls behövde sortera någonting. Min ini klass funkar hur bra som helst nu :)

Permalänk: https://www.webforum.nu/p/1140247

## #13 — Tinwëlint, 2005-12-05T21:07Z

Tar upp den här tråden igen då den handlade om precis det problem jag själv har.

> **PeW skrev:**
>
> realloc är en funktion i ett C - lib, så det är bara dumt att blanda in den i C++. Länkad lista är kalas i ditt fall, alternativt allokera nytt med new men det känns onödigt då det redan finns så bra saker i STL  :)

Borde lära mig använda STL. Kan inte så mycket om det där.

Men om jag nu vill allokera nytt med new.

Jag har en array definierad som 

```
user * users = new user[x]
```

 som medlem i min klass.

I en metod vill jag kunna lägga till ett nytt user-objekt i den. Jag har provat (världens fulaste metod?):

```
//kopiera från users till tillfällig array: user * temp

delete [] users;

users = new user[nystorlek]

//kopiera från temp till users
```

Detta fungerar inte särskilt bra. Någon som kan ge mig något tips (förutom STL som jag inte kan sätta mig in i nu bara för den här skoluppgiften).

Permalänk: https://www.webforum.nu/p/1722340

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/84294-dynamisk-array
