如何将矢量推回地图<int, vector<int>>
How to push back a vector into a map<int, vector<int>>
我想在这里做的是创建一个这样的地图:
0 -> 0,1,...,4;
1-> 0,1,...,4;
...
9 -> 0,1,...,4;
int main(){
map<int, vector<int>> m;
for(int i=0; i<10; i++){
vector<int> temp;
for(int j=0; j<5; i++){
temp.push_back(j);
}
m.insert({i, m.push_back(temp)});
}
}
但是当我试图推回 temp = {0,1,2,3,4}
向量时,它给我一个错误。
估计下划线的语法有问题
你能告诉我如何解决这个错误吗?
注意:for(int j=0; j<5; i++){
- 这里的 i++
应该是 j++
,所以要修正它:
#include <vector>
#include <map>
int main(){
std::map<int, std::vector<int>> m;
for(int i=0; i<10; i++) {
std::vector<int> temp;
for(int j=0; j<5; j++) { // not i++
temp.push_back(j);
}
m.insert({i, temp}); // not m.insert({i, m.push_back(temp)});
}
}
但是您可以创建 one vector<int>
并将其复制到 map
:
#include <map>
#include <numeric>
#include <vector>
int main(){
std::vector<int> tmp(5);
std::iota(tmp.begin(), tmp.end(), 0); // 0,1,2,3,4
std::map<int, std::vector<int>> m;
for(int i = 0; i < 10; ++i) {
m.emplace(i, tmp);
}
}
std::map
没有 push_back()
方法。您需要插入您准备好的 vector
本身,例如:
int main(){
map<int, vector<int>> m;
for(int i=0; i<10; i++){
vector<int> temp;
for(int j=0; j<5; j++){
temp.push_back(j);
}
m.insert({i, temp});
}
}
或者,使用 map::operator[]
而不是 map::insert()
,让 map
为您创建每个 vector
,例如:
int main(){
map<int, vector<int>> m;
for(int i=0; i<10; i++){
vector<int> &vec = m[i];
for(int j=0; j<5; j++){
vec.push_back(j);
}
}
}
我想在这里做的是创建一个这样的地图:
0 -> 0,1,...,4;
1-> 0,1,...,4;
...
9 -> 0,1,...,4;
int main(){
map<int, vector<int>> m;
for(int i=0; i<10; i++){
vector<int> temp;
for(int j=0; j<5; i++){
temp.push_back(j);
}
m.insert({i, m.push_back(temp)});
}
}
但是当我试图推回 temp = {0,1,2,3,4}
向量时,它给我一个错误。
估计下划线的语法有问题
你能告诉我如何解决这个错误吗?
注意:for(int j=0; j<5; i++){
- 这里的 i++
应该是 j++
,所以要修正它:
#include <vector>
#include <map>
int main(){
std::map<int, std::vector<int>> m;
for(int i=0; i<10; i++) {
std::vector<int> temp;
for(int j=0; j<5; j++) { // not i++
temp.push_back(j);
}
m.insert({i, temp}); // not m.insert({i, m.push_back(temp)});
}
}
但是您可以创建 one vector<int>
并将其复制到 map
:
#include <map>
#include <numeric>
#include <vector>
int main(){
std::vector<int> tmp(5);
std::iota(tmp.begin(), tmp.end(), 0); // 0,1,2,3,4
std::map<int, std::vector<int>> m;
for(int i = 0; i < 10; ++i) {
m.emplace(i, tmp);
}
}
std::map
没有 push_back()
方法。您需要插入您准备好的 vector
本身,例如:
int main(){
map<int, vector<int>> m;
for(int i=0; i<10; i++){
vector<int> temp;
for(int j=0; j<5; j++){
temp.push_back(j);
}
m.insert({i, temp});
}
}
或者,使用 map::operator[]
而不是 map::insert()
,让 map
为您创建每个 vector
,例如:
int main(){
map<int, vector<int>> m;
for(int i=0; i<10; i++){
vector<int> &vec = m[i];
for(int j=0; j<5; j++){
vec.push_back(j);
}
}
}