C++11 迭代c+的前N个元素+;11 std::数组
我使用的是std::数组(c++11)。我之所以选择使用std::array,是因为我希望在编译时固定大小(与运行时相反)。无论如何,我只能迭代前N个元素。i、 e.类似于:C++11 迭代c+的前N个元素+;11 std::数组,c++11,C++11,我使用的是std::数组(c++11)。我之所以选择使用std::array,是因为我希望在编译时固定大小(与运行时相反)。无论如何,我只能迭代前N个元素。i、 e.类似于: std::array<int,6> myArray = {0,0,0,0,0,0}; std::find_if(myArray.begin(), myArray.begin() + 4, [](int x){return (x%2==1);}); #include <iostream> #incl
std::array<int,6> myArray = {0,0,0,0,0,0};
std::find_if(myArray.begin(), myArray.begin() + 4, [](int x){return (x%2==1);});
#include <iostream>
#include <array>
int main() {
constexpr const int N = 4;
std::array<int, 6> arr{ 0, 1, 2, 3, 4, 5 };
for (auto it = std::begin(arr); it != std::begin(arr) + N && it != std::end(arr); ++it)
std::cout << *it << std::endl;
}
std::array myArray={0,0,0,0,0};
std::find_if(myArray.begin(),myArray.begin()+4,[](intx){return(x%2==1);});
这不是最好的例子,因为FIFIOIF返回一个标记第一个奇数的迭代器,但是你得到了这个想法(我只想考虑第一个N,在这个例子中,n=4,我的STD::数组)的元素。< /P> 注意:也有类似的问题,但答案总是涉及到使用不同的容器(vector或valarray,这不是我想要的。正如我前面所述,我希望容器的大小在编译时固定)
提前谢谢你 如果要迭代
std::array
的前N个数字,只需执行以下操作:
std::array<int,6> myArray = {0,0,0,0,0,0};
std::find_if(myArray.begin(), myArray.begin() + 4, [](int x){return (x%2==1);});
#include <iostream>
#include <array>
int main() {
constexpr const int N = 4;
std::array<int, 6> arr{ 0, 1, 2, 3, 4, 5 };
for (auto it = std::begin(arr); it != std::begin(arr) + N && it != std::end(arr); ++it)
std::cout << *it << std::endl;
}
#包括
#包括
int main(){
constexpr const int N=4;
数组arr{0,1,2,3,4,5};
for(auto it=std::begin(arr);it!=std::begin(arr)+N&&it!=std::end(arr);+it)
从你提出问题的方式来看,我假设你说的是“迭代”,但实际上是指“使用算法进行操作”
该行为不是特定于容器,而是特定于容器的迭代器类型。
满足,与std::vector
和std::deque
相同
这意味着
std::array<int,6> myArray = {0,0,0,0,0,0};
您可以向它添加一个编号n
auto end = myArray.begin() + 4;
…导致数组中n
th元素之外的一个元素的迭代器。因为这正是序列的end
迭代器的定义
std::find_if(myArray.begin(), myArray.begin() + 4, ... )
效果很好。这是一个更直观的例子:
#include <algorithm>
#include <array>
#include <iostream>
#define N 4
int main()
{
std::array<char, 6> myArray = { 'a', 'b', 'c', 'd', 'e', 'f' };
auto end = myArray.begin() + N;
if ( std::find( myArray.begin(), end, 'd' ) != end )
{
std::cout << "Found.\n";
}
return 0;
}
#include(列表
,集
,多集
,映射
,多映射
)仅支持+
和-
(forward\u list
,unordered\u set
,unordered\u multiset
,unordered\u map
,unordered\u multimap
)只支持+
不支持取消对后缀++
结果的引用
你试过了吗?我不确定我是否理解你的问题和你的目标,你想得到数组中前N个元素的所有奇数吗?你可以使用它。否则,只需使用普通for
循环并在N个元素上迭代即可。如果4
是参数,你就不能将std::find\uter?为什么你认为当你使用不同的容器时,答案会有所不同?你能澄清一下你回答的是什么问题吗?当再次阅读OP的帖子时,我看不出这是如何回答他的问题的。(这是一个很好的、知情的答案,但不确定它回答了什么问题!)。同样,应该避免使用#define
定义的常量。@Tobias:如何迭代C11std::array
的前N个元素。你知道,问题的标题;-)那么为什么要使用std::find
。@Tobias:因为它接近OP的示例,但比他的lamb更简单、更容易验证da.(我假设OP说的是“迭代”,但意思是“使用算法进行操作”,因为他给出了一个例子和附带的文本。)@JoachimPileborg:唉,这就是为什么我们不能拥有好东西的原因。-)在答案中添加了一条注释。