Home Backend Development C#.Net Tutorial The pitfalls of size in stl

The pitfalls of size in stl

Nov 22, 2016 pm 03:12 PM
stl

When I first joined the company last year, there was LRUCache in the company's basic library, and the implementation inside used std::list. But the function that calculates std::list directly uses the size() method in stl. As a result, during the stress test, the performance was stuck here.
Today, a colleague found another queue implementation in the basic library, which also used std::list. The size() method was also used when getting the number of elements.
Unfortunately, the company's basic library only exposes the header files, and it is impossible to check one by one whether this pit will exist in other places.

Let’s take a look at the implementation of the size() method in stl:

size_type    
  size() const
      { return std::distance(begin(), end()); }
Copy after login

The g++ version of the above code is 4.2.1

Obviously, the complexity is O(N). When there are many elements in the list, the calculation will be very slow. Therefore, when using std::list, you must remember to maintain a count yourself.


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to implement a custom comparator in C++ STL? How to implement a custom comparator in C++ STL? Jun 05, 2024 am 11:50 AM

Implementing a custom comparator can be accomplished by creating a class that overloads operator(), which accepts two parameters and indicates the result of the comparison. For example, the StringLengthComparator class sorts strings by comparing their lengths: Create a class and overload operator(), returning a Boolean value indicating the comparison result. Using custom comparators for sorting in container algorithms. Custom comparators allow us to sort or compare data based on custom criteria, even if we need to use custom comparison criteria.

How to get the size of a C++ STL container? How to get the size of a C++ STL container? Jun 05, 2024 pm 06:20 PM

You can get the number of elements in a container by using the container's size() member function. For example, the size() function of the vector container returns the number of elements, the size() function of the list container returns the number of elements, the length() function of the string container returns the number of characters, and the capacity() function of the deque container returns the number of allocated memory blocks.

How to design custom STL function objects to improve code reusability? How to design custom STL function objects to improve code reusability? Apr 25, 2024 pm 02:57 PM

Using STL function objects can improve reusability and includes the following steps: Define the function object interface (create a class and inherit from std::unary_function or std::binary_function) Overload operator() to define the function behavior in the overloaded operator() Implement the required functionality using function objects via STL algorithms (such as std::transform)

How to sort C++ STL containers? How to sort C++ STL containers? Jun 02, 2024 pm 08:22 PM

How to sort STL containers in C++: Use the sort() function to sort containers in place, such as std::vector. Using the ordered containers std::set and std::map, elements are automatically sorted on insertion. For a custom sort order, you can use a custom comparator class, such as sorting a vector of strings alphabetically.

How to deal with hash collisions when using C++ STL? How to deal with hash collisions when using C++ STL? Jun 01, 2024 am 11:06 AM

The methods for handling C++STL hash conflicts are: chain address method: using linked lists to store conflicting elements, which has good applicability. Open addressing method: Find available locations in the bucket to store elements. The sub-methods are: Linear detection: Find the next available location in sequence. Quadratic Detection: Search by skipping positions in quadratic form.

What are the common types in C++ STL containers? What are the common types in C++ STL containers? Jun 02, 2024 pm 02:11 PM

The most common container types in C++STL are Vector, List, Deque, Set, Map, Stack and Queue. These containers provide solutions for different data storage needs, such as dynamic arrays, doubly linked lists, and key- and value-based associative containers. In practice, we can use STL containers to organize and access data efficiently, such as storing student grades.

How to use C++ STL to achieve code readability and maintainability? How to use C++ STL to achieve code readability and maintainability? Jun 04, 2024 pm 06:08 PM

By using the C++ Standard Template Library (STL), we can improve the readability and maintainability of the code: 1. Use containers to replace primitive arrays to improve type safety and memory management; 2. Use algorithms to simplify complex tasks and improve efficiency; 3. .Use iterators to enhance traversal and simplify code; 4.Use smart pointers to improve memory management and reduce memory leaks and dangling pointers.

Iterators in C++ STL Iterators in C++ STL Aug 21, 2023 pm 08:52 PM

C++STL (StandardTemplateLibrary) is one of the standard libraries of the C++ programming language. It contains a series of standard data structures and algorithms. In STL, iterator (iterator) is a very important tool for traversing and accessing in STL containers. An iterator is a pointer-like object that can point to an element in a container (such as vector, list, set, map, etc.) and can be moved in the container.

See all articles