将向量<vector<int> > 传递给参数
Passing a vector<vector<int> > to an argument
我是 C++ 编程的新手,一段时间以来,我一直在尝试用 vector<vector<int> >
.
解决问题
这是头文件
#ifndef ASSIGNMENT_H_
#define ASSIGNMENT_H_
#include <iostream>
#include <vector>
#include <string>
using std::string;
using std::vector;
using namespace std;
class Mood{
public:
string lecture;
vector<Block> blocks;
Mood(vector<vector<int> > &m, string lecture){
this->lecture=lecture;
for(auto r: m){
blocks.push_back(Block(r));
}
}
};
#endif
Block 是另一个简单的 class,在同一个文件中只写入了 2 个 int(但我认为这对我的问题并不重要)。
问题主要写在另一个文件中:
#include <iostream>
#include <vector>
#include <string>
#include "assignment.h"
using std::vector;
using std::string;
using namespace std;
int main(){
Mood r= Mood({{1,2}},"Hello");
}
错误非常普遍:预期表达式
尝试将构造函数中的参数m
定义为常量,例如:
Mood(const vector<vector<int> > &m, string lecture)
这将允许您传递 R 值(即 {{2,3}}
)
要么您删除了错误消息的一些重要部分,要么您的编译器异常不交流。
初始化列表的处理有时仍然有点——呃——不是最理想的。请试试这个:
auto main() -> int {
auto r = Mood({vector<int>{1,2}}, "Hello");
}
更新
在我们发现的评论中,您使用 C++11 初始化语法,但没有激活 C++11 支持。要么激活 C++11,要么采用旧方法来初始化向量:
vector<vector<int> > m;
vector<int> m0;
m.push_back(m0);
m[0].push_back(1);
m[0].push_back(2);
Mood r = Mood(m, "Hello");
我是 C++ 编程的新手,一段时间以来,我一直在尝试用 vector<vector<int> >
.
这是头文件
#ifndef ASSIGNMENT_H_
#define ASSIGNMENT_H_
#include <iostream>
#include <vector>
#include <string>
using std::string;
using std::vector;
using namespace std;
class Mood{
public:
string lecture;
vector<Block> blocks;
Mood(vector<vector<int> > &m, string lecture){
this->lecture=lecture;
for(auto r: m){
blocks.push_back(Block(r));
}
}
};
#endif
Block 是另一个简单的 class,在同一个文件中只写入了 2 个 int(但我认为这对我的问题并不重要)。
问题主要写在另一个文件中:
#include <iostream>
#include <vector>
#include <string>
#include "assignment.h"
using std::vector;
using std::string;
using namespace std;
int main(){
Mood r= Mood({{1,2}},"Hello");
}
错误非常普遍:预期表达式
尝试将构造函数中的参数m
定义为常量,例如:
Mood(const vector<vector<int> > &m, string lecture)
这将允许您传递 R 值(即 {{2,3}}
)
要么您删除了错误消息的一些重要部分,要么您的编译器异常不交流。
初始化列表的处理有时仍然有点——呃——不是最理想的。请试试这个:
auto main() -> int {
auto r = Mood({vector<int>{1,2}}, "Hello");
}
更新
在我们发现的评论中,您使用 C++11 初始化语法,但没有激活 C++11 支持。要么激活 C++11,要么采用旧方法来初始化向量:
vector<vector<int> > m;
vector<int> m0;
m.push_back(m0);
m[0].push_back(1);
m[0].push_back(2);
Mood r = Mood(m, "Hello");