gpt4 book ai didi

c++ - 多个 vector 的数据表示

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:14 29 4
gpt4 key购买 nike

我有两个项目目录和电影。我需要用特定的电影集表示一个目录(每个目录只有 4 个)。假设我们有 2 个目录和 8 部电影。 1 个目录将包含 4 部电影,另一个将包含 4 个。以编程方式,它的第 0 个目录包含:0 到 3 个电影 ID,第 1 个目录包含:4 到 7 个电影 ID。我已经编写了以下代码,但无法在 vector 的帮助下实现预期输出与原始输出中所示的所需内容。

#include <iostream>
#include <vector>

using namespace std;

const int noofmovies = 4;

class Myclass{
private:
int directory;
vector<int> directories;
vector<int> movies;
public:
void read();
void display() const;
};
void Myclass::read(){
cout << "Enter number of directories: " << endl;
cin >> directory;
for(int i=0;i<directory;i++){
directories.push_back(i);
}
for(int j=0;j<(directory*noofmovies);j++){
movies.push_back(j);
}
}
void Myclass::display() const{
for(int i=0;i<directories.size();i++){
cout << "directory[" << i << "]" << " contains " << endl;
}
for(int j=0;j<movies.size();j++){
cout << "movies[" << j <<"]" <<endl;
}
}
int main(){
Myclass my;
my.read();
my.display();
}

原始输出:

Enter number of directories:
2
directory[0] contains
directory[1] contains
movies[0]
movies[1]
movies[2]
movies[3]
movies[4]
movies[5]
movies[6]
movies[7]

预期输出:

Enter number of directories:
2
directory[0] contains
movies[0]
movies[1]
movies[2]
movies[3]
directory[1] contains
movies[4]
movies[5]
movies[6]
movies[7]

好吧,我尝试如下修改循环,但结果不是我想要的:

    void Myclass::read(){
cout << "Enter number of directories: " << endl;
cin >> directory;

for(int i=0;i<directory;i++){
directories.push_back(i);
for(int j=0;j<noofmovies;j++){
movies.push_back(j);
}
}
}
void Myclass::display() const{

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

}

最佳答案

问题出在 Myclass::display() const 成员函数中。您的其他功能的两种实现都很好。

您的最后一次尝试是最接近的。您唯一的问题是嵌套 for 循环的循环边界。

目前你循环播放所有的电影,即

for (int j=0 ; j < movies.size() ; j++)

这是不正确的,因为它看起来好像每个目录都拥有所有 电影。但是,目录 i 拥有从 i*noofmovies(含)到 (i+1)*noofmovies(独占)的电影。换句话说,将内部循环更改为

for (int j=i*noofmovies ; j < (i+1)*noofmovies ; j++)

将修复您的程序。

关于c++ - 多个 vector 的数据表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34453479/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com