我如何将输入分配给在 for 循环中设置的映射功能
how I can assign input to map function with set in the for loop
我想知道如何使用 for 循环并为我的输入映射设置!这是我的想法,但有一些错误!
实际上我有一个集合 Y,我想将一个元素映射到 1,另一个映射到零! 例如:
输入:Y={2,3,4}输出:[1,0,0],[0,1,0],[0,0,1]或换句话说:{2->1, 3->0, 4->0},{2->0, 3->1,4->0},{2->0,3->0,4->1}我需要我的输出作为载体
for (iter = Y.begin(); iter != Y.end(); ++iter) {
Map myMap;
myMap.insert(std::make_pair(iter, 1));
if (Y != iter) {
myMap.insert(std::make_pair(Y, 0));
}
}
请注意
,由于您已经声明了映射,因此myMap
for 循环内部,因此每次循环迭代都会创建一个全新的映射。您也无法在循环之外访问它。因此,您应该在循环之前声明它。
从您的评论来看,您似乎正在尝试将集合中的所有项目映射到 0,但第一个除外。在这种情况下,首先将它们全部映射到 0,然后更改后面的第一个:
map<int, int> m;
for(auto iter = Y.begin(); iter != Y.end(); iter++) {
m[*iter] = 0;
}
if(Y.size() != 0) {
m[*Y.begin()] = 1;
}
编辑
根据您在下面的评论,这应该是您正在寻找的:
vector<map<int,int>> v;
for(auto iter = Y.begin(); iter != Y.end(); iter++) {
map<int, int> m;
for(auto iter2 = Y.begin(); iter2 != Y.end(); iter2++) {
m[*iter2] = (*iter == *iter2);
}
v.push_back(m);
}
在这里查看它的实际效果
编辑 2
经过更多评论,听起来这就是您实际要查找的内容:
int arr[ARR_SIZE][ARR_SIZE] = {0}; //initialize whole array to 0's
int count = 0;
for(auto iter = Y.begin(); iter != Y.end(); iter++, count++) {
arr[count][*iter-1] = 1; //pick out the specific values we want to be 1
}
(请注意,我不确定您所说的e
是什么意思,所以我忽略了它)
在这里查看它的实际效果
相关文章:
- 具有Qt事件循环的可移植通用共享库设置
- 对于完成布尔值设置为 true 后未停止的循环
- 循环中的变量被设置为下一个数组的元素始终具有相同的内存地址?
- 是否可以为一个循环设置多个条件
- 循环 std::由索引设置
- 第二个 while 循环未运行,将值设置为 "nan"
- C++ if 语句将条件设置为 true 和循环中的 OR-ing 条件之间的行为差异
- while 循环是否在设置标志的情况下运行多次?
- 有没有办法在C++中将偏移量设置为基于范围的 for 循环?
- 循环以使用设置模板类将所有 26 个字母添加到 s 中
- 尝试在自定义 QT 创建器文本编辑器中创建查找和替换循环.我似乎无法设置光标位置
- 在循环中设置指向 int 值的指针
- 如何将布尔矩阵的每个元素设置为false而不循环
- 如何使用Boost Graph库使用循环中的循环设置相同的边缘重量
- 一个线程设置成员,而另一个循环上方 - 是此螺纹 - 不安全
- 如何在没有循环的字节中设置位
- 对于循环设置变量为条件
- C++ 如何在地图中循环设置
- C++ std::map<std::string, std::set<std::string>> .如何循环设置值?
- Arduino循环/设置问题