C++ :: Swap Elements Of Vector
Apr 21, 2014how to swap the first and 'mid' elements of a vector?
View 2 Replieshow to swap the first and 'mid' elements of a vector?
View 2 Replieswrite a swap function to swap 2 elements in the vector?
View 3 Replies View RelatedI am reading a book currently on data structures in c++. The questions I have is how I would be able to swap two adjacent elements by adjusting only the links (not the data) using, a) singly linked lists, doubly linked lists.
For the single linked list which I am somewhat familiar with (by the content of the book), I would consider taking the Node A, and copying its data into a new Node temp, then re-routing the pointer from whatever connected to Node A, now to Node temp. now I want to re-route the pointer of Node B to Node temp and Node temp to whatever Node was being connected from Node B. Is this the correct approach?
writing a sorting function that has an argument for a vector of ints rather than an array; it should use a selection sort algorithm.Here is what I have:
#include <iostream>
#include <vector>
#include <conio.h>
using namespace std;
void fillVector(vector<int> &aVector);
// PRECONDITION: number declared size of array a.
// POSTCONDITION: number_used is the number of values stored in a
//a[0] through a[number_used-1] have been filled with nonnegative int.
[code].....
I'm writing a program with a class containing a private std::vector<bool>. I chose bool because the vector represents a 2D array (think grid) and I only need 2 states per cell. I kept it one-dimensional as this hardly complicates things.
My problem is that I don't know how to initialize the vector, i.e. fill it with 0's.
The grid's resolution is not known at compile time, so I imagine I have to set the size (and content) of the vector in the class constructor.
Here's what I have tried among several things:
Code: World::World(const u_short worldsize)
{
grid.reserve(worldsize * worldsize); // grid is the private vector; square dimensions.
std::fill(grid.begin(), grid.end(), 0);
std::cout << grid.size();
} The output is 0. Only std::vector::push_back seems to have an effect on size(), but judging by its description, it doesn't look like the right candidate to populate a vector with zeros. Correct me if I'm wrong.
Frankly I expected line 3 to set the vector's size.
I have an integer vector of size "n".
e.g.
std::vector<int> vec;
vec.pushback(0);
vec.pushback(1);
vec.pushback(2);
vec.pushback(3);
Now I want to generate all possible combinations of size = {0, 1, 2, ... , n}.
{0, 1, 3} is not equal to {3, 1, 0} or {1, 0, 3} or {3, 0, 1}
I had a question about memory allocation/how iterators work for a std::vector<foo> of a user defined class 'foo'. Say foo contains variables of variable size, so that each member of the std::vector<foo> does not require the same amount of memory space.
Does c++ allocate the same amount of memory for each element, equal to the amount of memory required for the largest element? Or does it use some sort of array of pointers pointing to the location of each element in the vector to make the iterator work? Or does it use some other method? I am wondering because I wrote a code which reads data from a binary files and stores most of it in std::vectors.
The code seems to be using significantly more memory than the sum of the size of all the binary files, and I am using vectors made up of the datatype within the binary files (float). So I was wondering if internally the code was allocating space for each vector element which is the size of the largest element as a way to handle indexing/iterators. I ran my code through a memory leak checker and it found no errors.
I am currently trying to implement a 2d vector to store x and y of type int.
I have successfully passed it to the function, however i am unable to store the values in it. It always returns with a segmentation fault and my program terminates from there. May i know how do i store them properly and call them out?
Below is my code snippet
int reconstructSecret(int x, int y, vector< vector<int> > &inVec ,int constructSecret) {
int getX,getY,formula,accum,count,getSecret,startPosition,nextPosition,numerator,denominator;
getX=x;
getY=y;
int result;
[Code] .....
The main method
vector< vector<int> > inVec;
for(int i=0;i<constructSecret;i++) {
cout<<"please key in the "<<i<< "share of x value:";
cin>>x;
[Code] ...
I am working on a project for class where I use a parent Shape class with circle, rectangle, ect. Classes inheriting from that. Along side these I use a class called Scene. In main I need to create a scene and add some shapes to a vector in scene.
vector<Shape*> shapes
I need to use functions addShape(Shape* shape) and a delete shape method. I have the addShape finished. The problem I am having is with the delete method. Is there a way that I can use something like deleteShape(Shape* shape)? Is it possible for me to delete a specific shape from the vector by passing in that shape, or can it only be done using index? I have looked at the documentation for std::vector as well as std::vector::erase. I am wondering this because if I use index values and do something like
void Scene::deleteShape(unsigned int x) { shapes.erase(shapes.begin() + x ); }
It will lead to some errors later on due the the changing size and indexes of the vector and elements.
so lets assume i have a nested vector in a set or vice versa o in a more general form a container in a container example...
Code:
std::set<vector<int> > my_tuple;
How do i access individual elements of lets say the first vector in the set! Or the last element in the 3rd vector?
here is a piece of my code:
while(T--)
{
std::vector<std::pair<int, int> > *dragon;
std::vector<std::pair<int, int> > *villager;
[Code]....
I now wish to print the elements of the vector. How do I do it?
"Write a declaration for a function that takes two int parameters and returns an int, and declare a vector whose elements have this function pointer type."
View 9 Replies View RelatedI think std::copy appears to do what I'm looking for.
I'm in need of a vector member function that would allow me to "insert" a number of elements from one vector into another vector without resizing or destroying either.
An example of what I'm wanting to do is assign the contents of two[3-5][50-54] to one[7-9][2-6]. Other than looping through both vectors using .at(), is there a way to copy this?
This would be continuous within a user controlled loop with differing elements being exchanged.
typedef vector<vector<unsigned char> > vec;
vec one(10, vector<unsigned char>(10, '1')),
two(90, vector<unsigned char>(90, '2'));
I have read that the Erase-remove idiom is the way to go. I have a rough understanding of how this works but am unsure whether I can implement a match-counter along with it.
For counting alone, I would use something like this:
Code:
std::vector<std::string> v; // contains duplicate strings in different elements
std::string term = "foo"; // search term, changing at runtime as well
unsigned int matches = 0;
for( auto e : v ) {
if( e == term ) {
[Code] .....
I'm not sure how (or if) I can combine the two things. That is, I don't know how to integrate a function comparing two (changing) strings into the remove_if() method. Nor do I know how to increment a counter during iteration.
The vector is extremely large, so speed is paramount. I think there are many other avenues for optimization, but decreasing the vector's size for each consecutive search could deliver a big speed boost for subsequent searches I imagine, as traversing it holds the biggest cost.
I create a list of vectors (a vector of n vectors of m elements).
std::vector <std::vector <int> > vsFA (n, std::vector<int>(n));
How I assign values? I try below, but not worked
void armazenaFA( std::vector <int> &vFA) // this function only knows about vFA
{ vsFA[n] [m]= simTime().dbl();
OR
vsFA[n].push_back(simTime().dbl());
}
I have the following code segment:
Code:
void Swap(Number& num1, Number& num2)
{
cout<<"Before swap:"<<num1<<" "<<num2<<endl;
Number& temp=num1;
num1=num2;
num2=temp;
cout<<"After swap:"<<num1<<" "<<num2<<endl;
}
[code]...
to which the output is:
Code:
Before swap:13 11
After swap:13 11
13 11 that seems confusing.
why doesn't Swap() swap the two Numbers?
#include <iostream>
#include <conio.h>
using namespace std;
[Code]....
appears that error on line 25 & 30 where swap1 & swap2 is not declared in this scope.
This is for homework . Must use only getchar and putchar
Code:
int main(void) {
int pch; //first
int ch; //second
[Code]....
And it works , but i need to hit ENTER two times when i have 3,5,7... chars to print result.
The idea is to make an array and have it sort the contents inside the array in order from smallest to greatest by using a swap function. I don't know why it needs to be done this way when a sort function makes the most sense, but it is what it is.
For simplicity I want my array to only include three numbers. I was thinking {18,-2,24}. My only problem is that I am not understanding how to translate the swap function in an array. I tried using my previous swap function from another assignment and translate it to work for an array, but it doesn't work and I am completely lost and stuck. What I tried to do was this:
#include <iostream>
#include <cstdlib>
using namespace std;
const int SIZE = 3;
double myList[3] = {18, -2, 24};
void swap(myList[0], myList[1], myList[2]) {
[Code] ....
I want to swap the value of two rows in matrix among themselves, the index of rows are user defined.
void swapRows(int matrix[M][N], int m, int n, unsigned short R1, unsigned short R2) {
for (int i=0; i<m; i++) {
for (int j=0; j<n; j++) {
//dunno what to put in here
[Code] .....
How to swap two strings without using 3rd variable? could it be done using constructors? If yes how?
View 11 Replies View RelatedIm trying to swap the values of an integer and a character, however Im not sure where to insert the static_cast<type> part that I need for this to happen?
// Program to demonstrate a function template
#include <iostream>
using namespace std;
// Interchanges the values of variable1 and variable2
template<class T>
void swap_values(T& variable1, T& variable2)
[Code] ....
I simply need to know how I could swap the first and last letters of the input in this program:
int main() {
cout << "---------------------------------------------------------" << endl;
cout << " Letter Swapping Program" << endl;
cout << "---------------------------------------------------------" << endl;
string word;
cout << "Please enter a word at least 3 letters long: ";
cin >> word;
[Code] ....
By all means, I know this is a messy program and is not the most concise way to write it....
I have the following code. According to this the values of pointers p[0] and p[1] remains unchanged since the swap is made to local variables in swap function.Now my doubt is how can I swap the pointers p[0] and p[1] inside the function swap??
Code:
#include<stdio.h>int main(){char*p[2]={"hello","good morning"};
swap(p[0],p[1]);
printf("%s %s",p[0],p[1]);return0;
}void swap(char*a,char*b){char*t; t=a; a=b; b=t;
}
I'm using code blocks ....
1.Write a program to swap positions of digits of a user entered three-digit integer N, where N is equal or between 101 and 999. (i.e. if user enters 389 your program should print 983. If user enters 300 program should print 003). Repeatedly ask user for correct N, if he/she enters an integer N which is not in the range.
2. Given that y= 4*( 1- 1/3 + 1/5- 1/7+ 1/9-...plus or minus 1/N) Write a program using a for-loop or a while-loop to compute and print the sum of first 50 terms of y.
3. a) Write a user-defined function funGx to compute G(x), where
5 if x<-10
x^2 +(5/x) if -10 <=x<-5
x^2 - (5/x-5) if -5<=x<5
x^2 -(5/x) if 5<=x<10
-5 if x>=10
b) Call the user-defined function funGx in main function to compute and print G(x)values for x= -15.5 , x=5, and x= 0.5 in an informative sentence.
So I been working on this c++ project and I need to be able to take three seperate strings and send them to function to put them in alphabetical order through a-z and use the swap function to return them in order. I been searching for problems like this but I haven't fame across any. I can copy my code onto here as well as a more detailed description of what I'm needing to do onto here if needed.
View 4 Replies View Related