Как сделать каждый вектор в двухмерном векторе разным? - PullRequest
0 голосов
/ 22 ноября 2018

Добрый вечер всем, я пытаюсь получить вектор векторов для хранения по существу таблицы значений, где второй столбец использует число из первого для его вычисления, и, ну, это не работает.Я хочу, чтобы он хранил мои значения как:

    T   R
0 | 20 [R1]
1 | 30 [R2]
2 | 40 [R3]
3 | 50 [R4]
4 | 60 [R5]
[Continues until hits last number]
The numbers along the left side are the rows like Stuff[0][T] = 20, etc

So T would be vector<double>Temp and R would be vector<double>Resistance and 
they are both contained in vector<vector<double> >Stuff.

И поэтому вектор R будет использовать значения T для вычисления сопротивления.

int main ()                                                                                         
{

    double InitTemp,FinTemp,TempIncr;
    vector <vector <double> > Stuff;

    cout << "What is the range of temperatures being tested?(Initial Final) ";
    cin >> InitTemp >> FinTemp;
    cout << "How much would you like each temperature to increment? ";
    cin >> TempIncr;

    for(int i = 0; i < 2; i++)
    {
        vector <double> Temp;
        vector<double> Resistance;
        if(i == 0)
        {

            for (int j = InitTemp; j <= FinTemp; j+=TempIncr)
                Temp.push_back(j);
            Stuff.push_back(Temp);
        }

        if(i == 1)
        {

            double R=0;
            for(int k = 0; k < Temp.size();k++)
            {
                R = Temp[k]+1;
                Resistance.push_back(R);
            }
            Stuff.push_back(Resistance);
        }

    for (int i = 0; i< Stuff.size(); i++)
    {
        for(int j = 0; j < Stuff[i].size(); j++)
            cout << Stuff[i][j] << " ";
        cout << endl;
    }

Эта часть программы перейдет в другую большую программу, которая использует функцию для расчета сопротивления, но мне все еще нужно использовать Temp для этого, поэтому я просто добавляю 1 к температуре какзаполнитель.Мой вывод выглядит следующим образом:

What is the range of temperatures being tested?(Initial Final) 20 200
How much would you like each temperature to increment? 10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
Press any key to continue . . .

Он не выводит мой второй вектор, даже если он это сделал.Пожалуйста, помогите мне понять

1 Ответ

0 голосов
/ 22 ноября 2018

Перейти на std::vector из std::pair<double, double>.Тогда ваш код станет намного проще.Первый double равен Temperature, а второй Resistance.Из того, что я вижу в вашем коде, Resistance - это всего лишь 1 добавленное к Temperature.В этом случае следующий код должен работать:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
    double InitTemp, FinTemp, TempIncr;
    vector <pair<double, double > > Stuff;

    cout << "What is the range of temperatures being tested?(Initial Final) ";
    cin >> InitTemp >> FinTemp;
    cout << "How much would you like each temperature to increment? ";
    cin >> TempIncr;

    for (int j = InitTemp; j <= FinTemp; j += TempIncr)             
        Stuff.emplace_back(j, j+1);

    for (int i = 0; i < Stuff.size(); i++)
    {
        cout << Stuff[i].first << ", " << Stuff[i].second << endl;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...