C 向量由另一个向量索引
c++ vector indexing by another vector
sry提出了这个明显简单的问题,但是我找不到问题的确切答案,显然我没有经验来得出答案表格类似问题...
假设我有以下情况
#include <vector>
int main() {
std::cout << "Test" << std::endl;
int myints1[] = {1, 1 , 0, 0};
std::vector<int> vec1 (myints1, myints1 + sizeof(myints) / sizeof(int) );
int myints2[] = {1, 2 , 3, 4};
std::vector<int> vec2 (myints, myints2 + sizeof(myints2) / sizeof(int) );
std::vector<int> resultVec;
// Now as a result I want to get the resultVec as all entries in vec2
// where vec1 == 0, resulting in resultVec = [3,4]
return 0
}
如何根据另一个向量的值选择一个向量的所有条目?
您可以有一个循环,可以增加两个迭代器。由于您的收藏与您可以在for中都可以达到相同的类型,并且由于它们的尺寸相同,因此您只需要检查一个即可。
for (auto it1 = vec1.begin(), it2 = vec2.begin(); it1 != vec1.end(); ++it1, ++it2)
{
// Use *it1 and *it2
}
如果您可以访问C 17并提升,则可以使用不错的远程
for (auto & [val1, val2] : boost::combine(vec1, vec2))
{
// Use val1 and val2
}
请注意,您可以使用{}
来初始化vector
s,因此我不会打扰myints
。
std::vector<int> vec1 = {1, 1, 0, 0};
std::vector<int> vec2 = {1, 2, 3, 4};
只是在索引上循环循环。该代码假定vec2
S大小至少与vec1
一样大。
int main() {
std::cout << "Test" << std::endl;
int myints1[] = {1, 1 , 0, 0};
std::vector<int> vec1 (myints1, myints1 + sizeof(myints) / sizeof(int) );
int myints2[] = {1, 2 , 3, 4};
std::vector<int> vec2 (myints, myints2 + sizeof(myints2) / sizeof(int) );
std::vector<int> resultVec;
for (unsigned i = 0; i < vec1.size(); ++i) {
if (!vec1[i]) resultVec.push_back(vec2[i]);
}
return 0
}
相关文章:
- 在C++中调整向量中的索引
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 将转换字符键入 int 以用作向量C++的索引
- 在对向量中查找元素的索引
- 如何检查类实例向量的索引是否为空
- 如何根据排序索引的向量对 std::index 集进行排序?
- 向量索引变量声明(size_t 或 std::vector<DATATYPE>::size_type)
- 访问向量索引C++
- 包含全局最小值的向量索引
- C 向量由另一个向量索引
- 向量索引在C 中不会包裹吗?什么是解决方法
- 使用Armadillo库中的指数向量索引矩阵
- 将多个整数添加到一个向量索引? 'Cout'不起作用
- array:将一维数组的索引转换为多维数组的向量索引
- 将一维"flattened"索引转换为 N 维数组的 N 维向量索引
- 向量索引访问与迭代器访问的效率
- 特征矩阵支持由向量索引吗?
- 如何重写由向量索引指向的项?
- 在另一个向量中引用向量索引时出错:'std::out_of_range at memory location'
- c++帮助传递向量索引到函数