Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 22:52

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Vector out of bounce

Discussion on Vector out of bounce within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Hiris's Avatar
 
elite*gold: 99
Join Date: Apr 2011
Posts: 730
Received Thanks: 236
Vector out of bounce

Code:
	    try
		{
           return  MapContainer.at(index) ;
        }
        catch (std::exception& e)
		{

            std::cout << "Element " << index << ": index exceeds vector dimensions." << std::endl;

        }

vector.at ist doch sicher? Warum throwt er sich da einen wenn man index als 1 nimmt anstelle von 0 (ist nur 1 objekt im vector), ist ja nur out of bounce und dafür ist die exception ja prädestiniert oder?
Hiris is offline  
Old 06/04/2013, 18:29   #2

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
Ne, std::vector::at wirft ne Exception, std::vector:perator[] erstellt ein neues leeres Element, wenn man z.B. über die Size hinaus auf Elemente zugreifen will.
snow is offline  
Old 06/04/2013, 18:35   #3
 
Hiris's Avatar
 
elite*gold: 99
Join Date: Apr 2011
Posts: 730
Received Thanks: 236
Ja die exception wird aber nicht gecatched sondern es kommt eine box alla unberechtigter zugriff auf blablabla
Hiris is offline  
Old 06/04/2013, 20:00   #4
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Tu doch bitte der Performance einen Gefallen und überprüf das schlichtweg:
Code:
if(MapContainer.size() > index)
{
    return MapContainer.at(index);
}
Exceptions sind nur dazu da, außergewöhnliche Fehler abzufangen. Solche Sachen solltest du eigentlich immer vorher überprüfen, finde ich zumindest
Hast du das Programm überhaupt mit Exception Handling compiled?

€: Außerdem heißt das out of bounds und nich out of bounce

Padmak
Padmak is offline  
Old 06/04/2013, 20:09   #5
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Lass das try catch und check in ner Abfrage, ob der Index im richtigen Bereich liegt. Das ist wesentlich schöner und Exceptions sind sowieso immer so ne Sache.

Lass ausserdem das return im try-block weg. Return danach, denn jeder Pfad muss etwas zurückgeben und das passiert bei dir nicht.

Wenn du trotzdem unbedingt die Exception haben willst:
Code:
#include <exception>
#include <iostream>
#include <vector>

int main()
{
	std::vector<int> vec;
	for(int i = 0; i < 10; ++i)
		vec.push_back(i);

	try
	{
		int x = vec.at(10);
	}
	catch(std::exception& e)
	{
		std::cerr << e.what();
	}
}
Das wirft bei mir. Welchen Compiler benutzt du? Probiers mal im release-build.


Quote:
std::vectorerator[] erstellt ein neues leeres Element, wenn man z.B. über die Size hinaus auf Elemente zugreifen will.
Nein tut es nicht.
Schlüsselbein is offline  
Thanks
1 User
Old 06/04/2013, 20:40   #6
 
Hiris's Avatar
 
elite*gold: 99
Join Date: Apr 2011
Posts: 730
Received Thanks: 236
vs 2012 ultimate release version...
ich weiß das man es ohne exception machen kann, trotzdem dürfte es rein theoretisch die exception catchen, was es bei mir aus unerfindlichen Gründen nicht tut, alle anderen Exception´s werden normal gecatched und liegt definitiv an der stelle, habs mit breakpoints getestet :/ darum wunderts mich ôo
Hiris is offline  
Old 06/04/2013, 21:25   #7
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Zeig mal den kompletten Code der Routine.
Schlüsselbein is offline  
Old 06/05/2013, 00:49   #8

 
Delinquenz's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 1,160
Received Thanks: 232
Habs mal getestet:
GCC 4.7.2: vector::_M_range_check
MSVC 2012: invalid vector<T> subscript
Delinquenz is offline  
Reply


Similar Threads Similar Threads
[How to bounce] in CoD4 ?
06/26/2011 - Call of Duty - 13 Replies
Ja Titel sag alles. Wie macht man einen Bounce in COD4!. Freu mich über eure Antworten ;) K4CKTUSs
Mw2 Vector
05/12/2011 - Call of Duty - 9 Replies
Stimmt das wenn man Schaldämpfer raufschrauft dass sich die Vector nicht mehr so verzieht
Spammbot by M2-Stuff and Bounce On
03/21/2011 - Metin2 Hacks, Bots, Cheats, Exploits & Macros - 13 Replies
Hey alle zusammen, ich habe meinen ersten bot gemacht. Er ist leider ohne Hotkeys, das wird aber noch kommen. Hier noch einen Screen: http://img6.imagebanana.com/img/3tmtmtpj/thumb/Sc reen.png Für weitere Infos schreibt mir einen PN oder hier ins Thread. Das Programm ist im Anhang.
Hilfe bei vector [c++]
11/04/2010 - C/C++ - 17 Replies
Hilfe bei vector Ja, ich weiß, dass ich vieles frage. Aber man muss den Code ja auch verstehen den man schreibt und nicht einfach auswendig lernen... Vorweg: Ein vector ist sozusagen ein Datencontainer wo mehrere Daten eines Types z.B. int gespeichert werden. Also im Prinziep das selbe wie ein array.Mein Problem: Ich lese gerade ein Buch: Einführung in die Programmierung mit C++ von Bjarne Stroustrup (Erfinder von C++) Nun werden in diesem Buch nicht Arrays sondern Vectoren verwendet. die...
[Mittel] Bounce.
09/29/2010 - Artist Tutorials - 9 Replies
Hey com. Hier mal ein Tut von mir :) Hoffe ihr mögt es =D Die Signatur wurde mit Adobe Photoshop Cs5 gemacht! :) http://img3.imagebanana.com/img/uws4cyip/TutBounc e.png Hadios! :)



All times are GMT +2. The time now is 22:52.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.