【发布时间】:2016-07-17 23:47:58
【问题描述】:
我已经声明了一个列表和 3 个列表的向量,并将这 3 个列表添加到向量中。现在我想通过使用仅矢量将一些元素添加到这 3 个列表中的 2 个。我怎样才能做到这一点?
到目前为止,这是我的代码:
#include<iostream>
#include<list>
#include<vector>
using namespace std;
#ifndef ILIST
#define ILIST list<int>
#endif
#ifndef VLIST
#define VLIST vector<ILIST >
#endif
int main(int argc, char const *argv[])
{
ILIST l1(4,10), l2(4,20), l3(4,30);
VLIST vec;
vec.push_back(l1);
vec.push_back(l2);
vec.push_back(l3);
//here I want to add 2 elements in l2 and 1 in l3 by using the vector only.
return 0;
}
【问题讨论】:
-
为什么要写 3 行代码来定义类型别名而不是
using ILIST = std::list<int>;? -
另外,
vec.push_back(x)在vec的后面创建x的新副本,因此您必须将vec存储的内容更改为指针或std::reference_wrapper. -
@kfsone 我不知道第一种方法,我还不熟悉 C/CPP 的所有概念。最近由于 Java 性能不佳而搬到这里。我想你的第二条评论是我的答案,对吧?
-
最好稍微澄清一下为什么要同时拥有列表的两个视图 - 答案的实现需要更多地跳到 C++ 稍深的一端(指针可能是一个主要的学习C++的痛点,而reference_wrapping是C++11,新语言,新特性)
-
@kfsone 我想根据动态提供的玩家数量将 52 张卡分成一组相等的玩家。所以向量将保存我可以遍历的每个玩家的卡片列表。