Redian新闻
>
请教一个C++ 的 iterator 问题。
avatar
请教一个C++ 的 iterator 问题。# Programming - 葵花宝典
i*y
1
想看一点主流声音,学一点核心价值观咋这么难。。。。。
avatar
k*y
2
刚买的x220,用displayport口转HDMI接到电视上可以输出图像,但就是没有声音。
大家有类似问题吗?
avatar
d*e
3
请教一个C++ 的 iterator 问题。
假设有多个 streams, 找到那些至少有k 个stream 有的数。
我设了个Stream 类, 但是那个 bool move() 有问题,
iterator 到了尾部后, it != nums.end() 还是 true;
给的例子应该输出 3, 然后停止,但是运行却不是想象的。
谢谢。
#include
#include
#include
using namespace std;
class Stream{
private:
vector nums;

public:
vector::iterator it;
Stream(vector v): nums(v) {
it = nums.begin();
}
bool move(){
return it != nums.end();
}
int getValue(){
++it;
return *it;
}
};
class Comp{
public:
bool operator()(Stream& s1, Stream& s2){
return *(s1.it) > *(s2.it);
}
};
class Merge_stream{
private:
priority_queue, Comp> pq;
public:
vector find_nums(vector streams, int k){
vector res;
if (streams.size() == 0) return res;
for (int i = 0; i < streams.size(); ++i){
if (streams[i].move())
pq.push(streams[i]);
}
while (!pq.empty()){
Stream cur_s = pq.top();
pq.pop();
int cur_val = *(cur_s.it);
int count = 1;
while (cur_s.move() && cur_s.getValue() == cur_val);
if (cur_s.move())
pq.push(cur_s);

// deal with other streams with the same vals
while (!pq.empty() && cur_val == *(pq.top().it)){
++count;
Stream cur_top = pq.top();
pq.pop();
while (cur_top.move() && cur_top.getValue() == cur_val);
if (cur_top.move())
pq.push(cur_top);
}
if (count >= k)
res.push_back(cur_val);
}
return res;
}
};
int main(){
vector v1 = {1, 2, 2, 3};
vector v2 = {0, 1, 3};
vector v3 = {0, 2, 3};
Stream s1(v1);
Stream s2(v2);
int a = -1;
for (int i = 0; i < 4; ++i){
if (s2.move())
a = s2.getValue();
}
Stream s3(v3);
vector s = {s1, s2, s3};
Merge_stream m;
vector res;
res = m.find_nums(s, 3);

return 0;
}
avatar
B*a
4
直播别指望网星,网星只适合给老年人看电视剧,只有一个操作简单的优点

【在 i********y 的大作中提到】
: 想看一点主流声音,学一点核心价值观咋这么难。。。。。
avatar
n*7
5
试试重装声卡驱动
avatar
p*o
6
getValue有UB, 编译的时候把调试选项打开-D_GLIBCXX_DEBUG

【在 d******e 的大作中提到】
: 请教一个C++ 的 iterator 问题。
: 假设有多个 streams, 找到那些至少有k 个stream 有的数。
: 我设了个Stream 类, 但是那个 bool move() 有问题,
: iterator 到了尾部后, it != nums.end() 还是 true;
: 给的例子应该输出 3, 然后停止,但是运行却不是想象的。
: 谢谢。
: #include
: #include
: #include
: using namespace std;

avatar
h*e
7
我这里也挂了。不知道TXBB还能不能找到合适的源。Sigh.
avatar
k*y
8
刚重装了最新的声卡驱动,还是不行。好像网上很多人都有类似问题。
还有其他方法吗?
avatar
t*e
9
When the iterator points to the last element in vector, not vector.end() in
move, the move() function returns true; then in getValue(), iterator points
to vector.end() after ++iterator, then getValue() will try to return vector.
end().

【在 d******e 的大作中提到】
: 请教一个C++ 的 iterator 问题。
: 假设有多个 streams, 找到那些至少有k 个stream 有的数。
: 我设了个Stream 类, 但是那个 bool move() 有问题,
: iterator 到了尾部后, it != nums.end() 还是 true;
: 给的例子应该输出 3, 然后停止,但是运行却不是想象的。
: 谢谢。
: #include
: #include
: #include
: using namespace std;

avatar
t*b
10
新闻台我修复了。
挖节目源主要就是时间问题。现在cntv不让人随便用了,地址经常的变。
avatar
n*7
11
我是一用msn就没声音了,然后删了声卡,让系统自己找到驱动就好了。
你这个不清楚了。
avatar
m*o
12
int getValue(){
return *it++;
}
avatar
h*e
13
谢谢TXBB。至少能看新闻台了。
我还是不清楚怎么找这种直播的节目源。
avatar
k*y
14
谢谢!我用msn倒是没有出现声音的问题。
刚才google了下,貌似很多人有类似的问题,但还没有解决方法。
avatar
d*e
15
Thank you very much.

in
points
vector.

【在 t**********e 的大作中提到】
: When the iterator points to the last element in vector, not vector.end() in
: move, the move() function returns true; then in getValue(), iterator points
: to vector.end() after ++iterator, then getValue() will try to return vector.
: end().

avatar
c*7
16
display port能输出呻吟?
avatar
n*7
17
我也是用过之后才知道,土了

【在 c*********7 的大作中提到】
: display port能输出呻吟?
avatar
s*n
18
所以叫displayport嘛。就是不带声音只有display。
lenovo变态。。搞这个接口,没有外设用。
avatar
d*i
20
不知道不要瞎说啊,x220的display port是肯定带声音的,放不出来的多半是cable或
者adapter
不支持。

【在 s*******n 的大作中提到】
: 所以叫displayport嘛。就是不带声音只有display。
: lenovo变态。。搞这个接口,没有外设用。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。