我有一個很長的向量值,一個指定的行/列大小的用戶輸入。我需要從一長串向量列表中將一組3個數字分配到一個向量中。具有3個數字集的矢量將被推回到另一個矢量中,用戶輸入行/列大小。 1列= 3號矢量集等,直到每列填寫完畢。我無法制作此代碼(它需要在一個循環中)。請幫忙嗎?如何在C++中將3個元素的向量推回到一個向量中?
The picture is an example of a 4x4 vector, with each column a vector of 3 numbers
我有一個很長的向量值,一個指定的行/列大小的用戶輸入。我需要從一長串向量列表中將一組3個數字分配到一個向量中。具有3個數字集的矢量將被推回到另一個矢量中,用戶輸入行/列大小。 1列= 3號矢量集等,直到每列填寫完畢。我無法制作此代碼(它需要在一個循環中)。請幫忙嗎?如何在C++中將3個元素的向量推回到一個向量中?
The picture is an example of a 4x4 vector, with each column a vector of 3 numbers
聽起來好像你想嵌套向量,你的「長載體」內的每個小矢量代表3個值的列。如果是這樣,你可以這樣做,如:
std::vector<int> columnVec = { 1, 2, 3 };
std::vector<std::vector<int>> longVector;
longVector.push_back(columnVec);
在第一行中,我們聲明代表我們的列向量,並把裏面的三個整數。在第二行我們聲明另一個向量,但是這次包含其本身包含整數的向量,即包含列向量的向量。然後我們使用push_back()
將列向量推入我們的向量向量中。如果您需要打印的值,你可以這樣做,如:
for(auto& vec : longVector) { //Walk through our vector of vectors.
for(int value : vec) { //Walk through our column vectors of values.
std::cout << value; //Print out each value of the column.
}
std::cout << std::endl; //Add a newline.
}
注意,如果你打印出來,列將出現在控制檯行。如果你關心控制檯中的格式化,它會花費更多的精力,可能值得作爲一個單獨的問題提出問題。
一個可行的方法可能是這個樣子:
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
int main()
{
typedef std::vector<int> VecInt;
typedef VecInt::iterator VecIntIter;
typedef std::vector<VecInt> VecVecInt;
typedef VecVecInt::iterator VecVecIntIter;
VecVecInt rows;
const int maxRows = 10, maxCols = 10;
cout << "Values during creation" << endl;
cout << "----------------------" << endl;
for (int rowNum=0; rowNum<maxRows; rowNum++)
{
VecInt curRow;
for (int colNum=0; colNum<maxCols; colNum++)
{
if (colNum != 0)
cout << " ";
int cellValue = rand() % 32;
cout << cellValue;
curRow.push_back(cellValue);
}
cout << endl;
rows.push_back(curRow);
}
cout << endl;
cout << "Values during retrieval" << endl;
cout << "----------------------" << endl;
for (VecVecIntIter rowIter=rows.begin(); rowIter!=rows.end(); rowIter++)
{
VecInt curRow = (*rowIter);
for (VecIntIter colIter=curRow.begin(); colIter!=curRow.end(); colIter++)
{
if (colIter != curRow.begin())
cout << " ";
cout << (*colIter);
}
cout << endl;
}
}
雖然,這將存儲行的集合,而不是列的集合。很容易改變for循環。
等待,所以矢量'list'的大小爲mapRows * mapColumns。是對的嗎? –
從你的問題,你是否不清楚你是否使用一個矢量或矢量矢量(來表示一個矩陣)。 –
我的向量是temp1,它只是一個很長的一組數字。我需要取出3個數字,將它們設置爲一個矢量,然後將該矢量放入另一個矢量,其中的矢量具有來自用戶輸入的列+行大小。 3個數字實際上是一個RGB設置,所以最後如果我的向量必須是row = 2和column = 2 – Lina