On Thursday, 21 November 2013 00:26:17 UTC+5:30, VUkani  wrote:
> I was facing some problems while using vector in one of my simulation code. I 
> wanted to store structure in a vector. The structures are added with 
> push_back method of vector. But after adding few elements, it corrupts some 
> of the elements. 
> 
> \\Global declaration
> struct neighborRecord {
>       int nId;
>       bool type;
>       double locX;
>       double locY;
>       double rssi;
>       double dist;    
> };
> 
> vector<neighborRecord> neighborTable;
> 
> \\Need to call this funtion. All arguments are passed properly in the function
> 
> updateNeighborTable(int nId, bool A, double fromX, double fromY, double rss, 
> double Distance)
> {
>       int i = 0,pos = -1;
>       int tblSize = (int)neighborTable.size();
> 
>       for (i = 0; i < tblSize; i++){
>               if (neighborTable[i].nId == nId){
>                       pos = i;
>                       break;
>               }       
>       }
> \\ If a element with a nId is not present then add new record
>       if (pos == -1){
>               neighborRecord newRec;
>               newRec.nId = nId;
>               newRec.type = fromAnchor;
>               newRec.locX = fromX;
>               newRec.locY = fromY;
>               newRec.rssi = rss;
>               newRec.dist = Distance;
>               //neighborTable.reserve(sizeof(newRec));
>               neighborTable.push_back(newRec);
>               
>                  for (i=0; i< (int)neighborTable.size(); i++)  \\ Just to 
> check print
>               cout << "nId: "<<neighborTable[i].nId<< "type:" << 
> neighborTable[i].type;
>       }
> \\else if element with argument nId is present in the vector then update that 
> record
>       else{
>               
>               neighborTable[pos].nId = nId;   
>               neighborTable[pos].type = fromAnchor;   
>               neighborTable[pos].locX = fromX;        
>               neighborTable[pos].locY = fromY;
>               neighborTable[pos].rssi = rss;
>               neighborTable[pos].dist = Distance;
>               
>                 for (i=0; i< (int)neighborTable.size(); i++)   \\ Just to 
> check print
>               cout<< "nId: "<<neighborTable[i].nId<< "type:" << 
> neighborTable[i].type;
>       }
> }
> 
> This is a code snippet from my simulator code. Actual code is very long. I 
> tried to run similar code as separate small CC program, it works perfectly 
> but doesnot work in the simulator code. Whenever I print the vector contents, 
> after 10-12 records, it starts corrupting the structure data stored in 
> vector. 
> 
> Example trace output of the simulator
> 1.342766435621  SN.node[6].Application                   nId: 13type:1
> 1.342766435621  SN.node[6].Application                   nId: 8type:1
> 1.342766435621  SN.node[6].Application                   nId: 28type:1
> 
> then it becomes
> 2.518941580248  SN.node[6].Application                   nId: 13type:1
> 2.518941580248  SN.node[6].Application                   nId: 
> -2132507471type:47
> 2.518941580248  SN.node[6].Application                   nId: 28type:1
----------------------
does the nID value fit in within integer limits ? did u check ?

-- 
You received this message because you are subscribed to the Google Groups 
"Google Code Jam" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-code/e99e61b0-2e15-41f6-8819-fba0ea6b69dc%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to