gpt4 book ai didi

c++ - C++ 类的 iota 增量 vector

转载 作者:行者123 更新时间:2023-11-30 01:51:04 24 4
gpt4 key购买 nike

我最近一直在利用 <numeric> iota递增 int 类型 vector 的语句.但现在我正在尝试使用该语句来递增具有 2 个成员的显式类。

下面是整数 vector 的用法:

vector<int> n(6);
iota(n.begin(), n.end(), 1);

鉴于Obj类有一个名为 m 的整数成员.构造函数初始化 m到其相应的整数参数。这是我现在正在尝试做的事情:

vector<Obj> o(6);
iota(o.begin(), o.end(), {m(1)});

我试过像这样创建一个类增量重载:

Obj& operator ++() {
*this.m++;
return *this;
}

但我认为要么我的构造函数不是为这种重载设计的,反之亦然。如何修改我的构造函数和重载以使用 iota 递增对象成员?提前致谢!

最佳答案

我不确定我是否理解您的问题。下面的代码符合你的要求吗?

#include <algorithm>
#include <iostream>
#include <vector>

class Object {
public:
Object(int value = 0)
: m_value(value) { }
Object& operator++() {
m_value++;
return *this;
}
int value() const {
return m_value;
}
private:
int m_value;
};

int main() {
std::vector<Object> os(10);
std::iota(os.begin(), os.end(), 0);
for(const auto & o : os) {
std::cout << o.value() << std::endl;
}
}

在 OS X 10.7.4 上用 gcc 4.8 编译我得到:

$ g++ iota-custom.cpp -std=c++11
$ ./a.out
0
1
2
3
4
5
6
7
8
9

关于c++ - C++ 类的 iota 增量 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26579703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com