标签: const-iterator

什么时候将 const_iterator 声明为 const 迭代器就足够了?

例如,我可以用类似于以下的方式定义容器:

template <typename T>
class Example
{
public:
    using value_type = T;
    using iterator = value_type*;
    using const_iterator = const iterator;
    //etc
};
Run Code Online (Sandbox Code Playgroud)

但是,可以使用用户定义的迭代器来执行此操作吗?

template<typename T>
class Example
{
public:
    using value_type = T;
    /*friend?*/ class iterator;
    using const_iterator = const iterator; //is this okay?
    //etc
};
Run Code Online (Sandbox Code Playgroud)

详细的解释将不胜感激。

c++ iterator class const-iterator

1
推荐指数
1
解决办法
856
查看次数

谁更快:BOOST_FOREACH宏或for

我测试了我的程序,并决定将BOOST_FOREACH宏更改为简单for循环const_iterator.

我得到意想不到的结果:程序工作较慢for.

然后我写了小测试应用程序:

std::vector<int> vec;
for (int i = 0; i != 50000000; ++i)
    vec.push_back(i);



time_t t1 = clock();
int sum1 = 0;
for (std::vector<int>::const_iterator it = vec.begin(); it != vec.end(); ++it)
    sum1 += *it;
std::cout << ulong(clock() - t1);

time_t t2 = clock();
int sum2 = 0;
BOOST_FOREACH(auto &it, vec) {
    sum2 += it;
}
std::cout << ulong(clock() - t2);
Run Code Online (Sandbox Code Playgroud)

这是输出:

34963
26964
Run Code Online (Sandbox Code Playgroud)

为什么这样?

c++ macros boost const-iterator

0
推荐指数
1
解决办法
58
查看次数

使用std :: map const_iterator更改/更新值

我只是想知道我是否可以使用const_iterator更改/更新地图的值。

下面是代码片段:

int main()
{
    map <int, int> m;
    m.insert(make_pair(1, 10));

    map <int, int>::const_iterator itr = m.begin(); //The iterator is const_iterator
    itr->second = 30;

    cout << itr->second; //The value to be printed is 30, and not 10.
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

预先感谢您分享您的想法。

c++ stl stdmap const-iterator

0
推荐指数
1
解决办法
111
查看次数

了解取消引用的类型-const_iterator

我有这个声明:

list<string*>::const_iterator iter;
Run Code Online (Sandbox Code Playgroud)

我想了解的类型是否*iter为:string*const string*或别的东西。

我读到cost_iterator返回参考。一方面,列表包含string*,迭代器指向这些列表。另一方面,const_iterator它指向的值应该是,const并且它的作用就像列表中的数据是const?尽管不是真的吗?不确定我缺少什么,正确的答案是什么。

c++ types const-iterator dereference

0
推荐指数
1
解决办法
70
查看次数

C++ 从类方法返回 const 反向迭代器,但方法不能是 const?

我试图从类方法返回 const 反向迭代器。但是当我将方法标记为 时,我的代码无法编译const。没有const代码编译就没有问题。

知道为什么吗?

#include <iostream>
#include <vector>

template <class ValueType>
class DynamicDataComponent {
    using ValuesType = std::vector<ValueType>;
    using IteratorType = typename std::vector<ValueType>::reverse_iterator;

public:
    DynamicDataComponent()
    {
        values.push_back(0);
        values.push_back(1);
        values.push_back(2);
        values.push_back(3);
    }

    const IteratorType getRBeginIt() const {
        return values.rbegin();
    }

private:
    ValuesType values;
};

int main() {
    DynamicDataComponent<size_t> dataComponent;
    std::cout << *dataComponent.getRBeginIt() << "\n";
}
Run Code Online (Sandbox Code Playgroud)

c++ methods iterator constants const-iterator

0
推荐指数
1
解决办法
115
查看次数

标签 统计

c++ ×5

const-iterator ×5

iterator ×2

boost ×1

class ×1

constants ×1

dereference ×1

macros ×1

methods ×1

stdmap ×1

stl ×1

types ×1