| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1405 人关注过本帖
标题:C++使用STL库问题
取消只看楼主 加入收藏
zwlsei
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-8-7
结帖率:50%
收藏
 问题点数:0 回复次数:2 
C++使用STL库问题
本人新手上路,在调试程序时遇到下列问题:
  涉及STL库的一段代码
  public:
  iterator begin()             { return this->_M_start; }
  const_iterator begin() const { return this->_M_start; }
  iterator end()               { return this->_M_finish; }
  const_iterator end() const   { return this->_M_finish; }
  reverse_iterator rbegin()              { return reverse_iterator(end()); }
  const_reverse_iterator rbegin() const  { return const_reverse_iterator(end()); }
  reverse_iterator rend()                { return reverse_iterator(begin()); }
  const_reverse_iterator rend() const    { return const_reverse_iterator(begin()); }
  size_type size() const        { return size_type(this->_M_finish - this->_M_start); }
  size_type max_size() const    { return size_type(-1) / sizeof(_Tp); }
  size_type capacity() const    { return size_type(this->_M_end_of_storage._M_data - this->_M_start); }
  bool empty() const            { return this->_M_start == this->_M_finish; }跟踪时出现错误:Unhandled exception in XXX.exe:0xC0000005:Access Violation


并且    M_start    CXX0017: Error: symbol "M_start" not found

请问各位大侠该怎么解决,多谢了  
搜索更多相关主题的帖子: STL 
2010-01-19 20:52
zwlsei
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-8-7
收藏
得分:0 
回复 2楼 bczgvip
本来是这一段代码
bool Contains(MatchIndex idx) const
    {
         AdjListElem e;
        e.m_index = idx.second;
        const MatchAdjList &l = m_match_lists[idx.first];
       std::pair<MatchAdjList::const_iterator,MatchAdjList::const_iterator> p;
            p=equal_range(l.begin(), l.end(), e);
        return (p.first != p.second); // l.end());
    }
当跟踪到 p=equal_range(l.begin(), l.end(), e);时,按f11进入STL的一段代码:
public:
  iterator begin()             { return this->_M_start; }
  const_iterator begin() const { return this->_M_start; }
  iterator end()               { return this->_M_finish; }
  const_iterator end() const   { return this->_M_finish; }
  reverse_iterator rbegin()              { return reverse_iterator(end()); }
  const_reverse_iterator rbegin() const  { return const_reverse_iterator(end()); }
  reverse_iterator rend()                { return reverse_iterator(begin()); }
  const_reverse_iterator rend() const    { return const_reverse_iterator(begin()); }
  size_type size() const        { return size_type(this->_M_finish - this->_M_start); }
  size_type max_size() const    { return size_type(-1) / sizeof(_Tp); }
  size_type capacity() const    { return size_type(this->_M_end_of_storage._M_data - this->_M_start); }
  bool empty() const            { return this->_M_start == this->_M_finish; }
刚进入执行iterator begin() { return this->_M_start; }时就出现错误:Unhandled exception in XXX.exe:0xC0000005:Access Violation。
我键入_M_start观察其值时发现为CXX0017: Error: symbol "M_start" not found;这本来是STL库自带的呀,为什么就说找不到呢?

多谢指导和帮助!
























[ 本帖最后由 zwlsei 于 2010-1-20 15:13 编辑 ]
2010-01-20 14:53
zwlsei
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-8-7
收藏
得分:0 
回复 4楼 bczgvip
它们的定义是这样的:

typedef std::pair<unsigned long, unsigned long> MatchIndex;
MatchIndex idx = GetMatchIndex(i, j);
MatchIndex GetMatchIndex(int i1, int i2)
{
    // MatchIndex num_images = GetNumImages();
    // return i1 * num_images + i2;
    return MatchIndex((unsigned long) i1, (unsigned long) i2);
}



class AdjListElem
{
public:
    bool operator< (const AdjListElem &other) const
    {
        return m_index < other.m_index;
    };
   
    unsigned int m_index;
    vector <KeypointMatch> m_match_list;//std::
};
typedef std::vector<AdjListElem> MatchAdjList;

这是关于图像匹配、像素点匹配的程序中的问题。



这样可以看明白吗?再次感谢您的帮助!
2010-01-22 10:41
快速回复:C++使用STL库问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017815 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved